【问题标题】:Binding Rich Text Box ScaleTransform to slider inside User Control将富文本框 ScaleTransform 绑定到用户控件内的滑块
【发布时间】:2012-07-30 00:28:21
【问题描述】:

我的项目中有一个包含滑块的用户控件实例。我想将 RichTextBox 控件的 ScaleTransform 绑定到滑块的值,但我不知道如何正确引用它。用户控件称为工具栏,其中的滑块称为 Scale 这是我迄今为止尝试过的:

<RichTextBox x:Name="body" 
                 SelectionChanged="body_SelectionChanged"
                 SpellCheck.IsEnabled="True"
                 AcceptsReturn="True" AcceptsTab="True"
                 BorderThickness="0 2 0 0">
        <RichTextBox.LayoutTransform>
            <ScaleTransform ScaleX="{Binding ElementName=toolbar.Scale, Path=Value}" ScaleY="{Binding ElementName=toolbar.Scale, Path=Value}"/>
        </RichTextBox.LayoutTransform>
    </RichTextBox>

我也尝试在 .cs 文件中执行此操作,因为我在绑定时遇到了问题,但是在我的滑块事件被触发后,我还没有弄清楚如何实际设置转换值。

【问题讨论】:

    标签: c# wpf xaml data-binding


    【解决方案1】:

    您不能在其他控件中引用名称,它们在另一个名称范围内。如果您需要滑块值,请将其绑定到 UserControl 的属性。

    UserControl 代码(在您的情况下可能会调用该类):

    <!-- ToolBar.xaml -->
    <UserControl ...
                 Name="control">
        <!-- ... -->
        <Slider Value="{Binding ScaleValue, ElementName=control}" ... />
        <!-- ... -->
    </UserControl>
    
    // ToolBar.xaml.cs
    public partial class ToolBar : UserControl
    {
        public static readonly DependencyProperty ScaleValueProperty =
            DependencyProperty.Register("ScaleValue", typeof(double), typeof(ToolBar));
        public double ScaleValue
        {
            { get { return (double)GetValue(ScaleValueProperty); }
            { set { SetValue(ScaleValueProperty, value); }
        }
    }
    

    新的绑定代码:

    <ScaleTransform ScaleX="{Binding ElementName=toolbar, Path=ScaleValue}" ... />
    

    【讨论】:

    • 我已完成此操作并将值保存在名为 _documentScale 的属性中,然后如何绑定到该值?
    • @JesseCarter:你应该正确地 registerdependency property。 (还有一个字段的名字很臭,你只能绑定到公共属性)
    • 我对 UserControl 的第一部分感到困惑。我是否在用户控件 xaml 或实现用户控件的 MainWindow xaml 中注册滑块值。用户控件 xaml 不包含名称,仅包含一个类
    • @JesseCarter:什么? UserControl 应该有一个用于其标记的 .xaml 文件和一个用于其背后代码的 .xaml.cs 文件,您将在 .xaml.cs 文件中注册该属性,然后将滑块绑定到 .xaml 文件中的该属性。您可以命名 UserControl 元素以在 Slider.Value 绑定中引用它。
    • 对不起,我把自己弄糊涂了。滑块现在正在放大和缩小,但我完全失去了在富文本框中输入的能力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多