2011-08-18 9 views
5

Mam następujący kod XAML, który chcę wykonać w pliku xaml.cs.Powiązanie elementu RichTextBox z suwakiem w języku C#

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

Zasadniczo wiąże suwak z ramką richtextbox i wykonuje powiększanie.

Oto co próbowałem:

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

Odpowiedz

3

Poniższy kod związany jest równoznaczne z 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

Nie wiem czy pytasz jak wykonać wiązanie w kodzie, lub jak ustawić ScaleX i ScaleY właściwości w kodzie (np bez wiążący). W takim przypadku wykonaj następujące czynności:

Najpierw podaj nazwę ScaleTransform, np. "myScaleTransform":

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

Następnie dodać moduł obsługi zdarzeń dla zdarzenia ValueChanged z mySlider. W tej obsługi, zaktualizuj ScaleX i ScaleY właściwości myScaleTransform:

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

nadzieję, że to pomaga.

1

zrobiłeś ustawiony transformacji, ale nie wiążącym - zostanie on naprawiony. trzeba użyć czegoś jak

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

naprawdę do samego

Powiązane problemy