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