将Rich Text Box ScaleTransform绑定到User Control内的滑块

时间:2012-07-30 00:28:21

标签: c# wpf xaml data-binding

我的项目中有一个包含滑块的用户控件实例。我想将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文件中这样做,因为我遇到了绑定问题,但是一旦我的滑块事件被触发,我就没有运气搞清楚如何实际设置变换值。

1 个答案:

答案 0 :(得分: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}" ... />