将RichTextBox绑定到C#中的Slider控件

时间:2011-08-18 20:16:40

标签: c# wpf xaml binding scaletransform

我有以下要在xaml.cs中执行的XAML代码。

<RichTextBox.LayoutTransform>
    <ScaleTransform ScaleX="{Binding ElementName=mySlider, Path=Value}"
                    ScaleY="{Binding ElementName=mySlider, Path=Value}"/>
</RichTextBox.LayoutTransform>

基本上它将滑块绑定到richtextbox并执行缩放。

以下是我的尝试:

RichTextBox newtext = new RichTextBox();
ScaleTransform mytran = new ScaleTransform();
mytran.ScaleX = mySlider.Value;
mytran.ScaleY = mySlider.Value;
newtext.LayoutTransform = mytran;

3 个答案:

答案 0 :(得分:3)

以下代码相当于Xaml

//<RichTextBox.LayoutTransform>
//    <ScaleTransform ScaleX="{Binding ElementName=mySlider, Path=Value}"
//                    ScaleY="{Binding ElementName=mySlider, Path=Value}"/>
//</RichTextBox.LayoutTransform>

ScaleTransform scaleTransform = new ScaleTransform();
Binding scaleXBinding = new Binding("Value");
scaleXBinding.Source = mySlider;
Binding scaleYBinding = new Binding("Value");
scaleYBinding.Source = mySlider;
BindingOperations.SetBinding(scaleTransform,
                             ScaleTransform.ScaleXProperty,
                             scaleXBinding);
BindingOperations.SetBinding(scaleTransform,
                             ScaleTransform.ScaleYProperty,
                             scaleYBinding);

RichTextBox newText = new RichTextBox();
newText.LayoutTransform = scaleTransform;

答案 1 :(得分:1)

不确定您是否询问如何在代码中执行绑定,或者如何在代码中设置ScaleXScaleY属性(例如,不绑定)。如果是这种情况,请按以下步骤操作:

首先,为您的ScaleTransform命名,例如“myScaleTransform”:

<RichTextBox.LayoutTransform>
   <ScaleTransform x:Name="myScaleTransform" ScaleX="1" ScaleY="1" />
</RichTextBox.LayoutTransform>

然后,为mySlider ScaleX事件添加事件处理程序。在此处理程序中,更新ScaleY的{​​{1}}和myScaleTransform属性:

public void mySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    myScaleTransform.ScaleX = mySlider.Value;
    myScaleTransform.ScaleY = mySlider.Value;
}

希望这有帮助。

答案 2 :(得分:1)

你确实设置了转换而不是绑定 - 它将被修复。 你需要使用像

这样的东西
Binding scaleBinding = new Binding("Value"){ElementName="mySlider"};
BindingOperations.SetBinding(mytran, ScaleTransform.ScaleXProperty, scaleBinding);
BindingOperations.SetBinding(mytran, ScaleTransform.ScaleYProperty, scaleBinding);

真的到了同一个