【问题标题】:Binding a RichTextBox to a Slider Control in C#在 C# 中将 RichTextBox 绑定到滑块控件
【发布时间】:2011-10-30 03:02:38
【问题描述】:

我想在 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;

【问题讨论】:

    标签: c# wpf xaml binding scaletransform


    【解决方案1】:

    不确定您是在问如何在代码中执行绑定,或者如何在代码中设置 ScaleXScaleY 属性(例如,不绑定)。如果是这种情况,您可以这样做:

    首先,给您的ScaleTransform 起一个名字,例如"myScaleTransform":

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

    然后,为mySliderValueChanged 事件添加事件处理程序。在这个处理程序中,更新myScaleTransformScaleXScaleY 属性:

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您确实设置了转换但没有设置绑定 - 它将被修复。 你需要使用类似的东西

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

      真的一样

      【讨论】:

        【解决方案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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多