C# 将富文本框ScaleTransform绑定到用户控件内的滑块

C# 将富文本框ScaleTransform绑定到用户控件内的滑块,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,我的项目中有一个包含滑块的用户控件实例。我想将RichTextBox控件的ScaleTransform绑定到滑块的值,但我不知道如何正确引用它。用户控件称为工具栏,其中的滑块称为缩放这是我迄今为止尝试的: <RichTextBox x:Name="body" SelectionChanged="body_SelectionChanged" SpellCheck.IsEnabled="True"

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

<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文件中执行此操作,因为绑定有问题,但在触发滑块事件后,没有找到如何实际设置转换值的方法。

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

UserControl
code(无论在您的情况下调用哪个类):

新绑定代码:

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


我已经这样做了,并将值保存在一个名为_documentScale的属性中,然后如何绑定到该值?@JesseCarter:您应该正确地选择一个。(名称也有字段的味道,您只能绑定到公共属性)我对UserControl的第一部分感到困惑。我是否在用户控件xaml或实现用户控件的主窗口xaml中注册滑块值。用户控件xaml不包含名称,仅包含class@JesseCarter:什么?UserControl的标记应该有一个.xaml文件,隐藏代码应该有一个.xaml.cs文件,您可以在.xaml.cs文件中注册该属性,然后将滑块绑定到.xaml文件中的该属性。您可以命名UserControl元素以在
Slider.Value
绑定中引用它。很抱歉,我把自己弄糊涂了。滑块现在正在放大和缩小,但我已经完全失去了在富文本框中键入内容的能力。
// 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}" ... />