Привязка RichTextBox к ползунку в C # - PullRequest
5 голосов
/ 19 августа 2011

У меня есть следующий код XAML, который я хочу выполнить в xaml.cs.

<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 ]

3 голосов
/ 19 августа 2011

Следующий код эквивалентен 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 голос
/ 19 августа 2011

вы установили преобразование, но не привязку - она ​​будет исправлена.Вам нужно использовать что-то вроде

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

, чтобы действительно к тому же

1 голос
/ 19 августа 2011

Не уверен, если вы спрашиваете, как выполнить привязку в коде или как установить свойства ScaleX и ScaleY в коде (например, без привязки).Если это так, вот как вы это сделаете:

Сначала дайте ScaleTransform имя, например, "myScaleTransform":

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

Затем добавьтеобработчик события ValueChanged события mySlider.В этом обработчике обновите свойства ScaleX и ScaleY myScaleTransform:

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

Надеюсь, это поможет.

...