2011-08-18 20 views
5

xaml.cs içinde gerçekleştirmek istediğim aşağıdaki XAML kodu var.Bir RichTextBox C bir Slider denetimine bağlama #

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

Temelde RichTextBox'un kaydırıcıyı bağlanan ve yakınlaştırma gerçekleştirir.

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

cevap

3

Aşağıdaki kod arkasında Dönüştürmek set ancak bağlayıcı vermedi 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

emin değil misiniz kodunda bağlama nasıl gerçekleştirileceği soruyorsan veya örneğin kod (içinde ScaleX ve ScaleY özelliklerini nasıl ayarlanacağı, olmadan:

aşağıdaki

i çalıştılar nedir) bağlanması. Bu durumda, şu şekilde yapın:

İlk önce, ScaleTransform numaranıza bir ad verin, örn. "myScaleTransform":

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

Sonra mySlider ait ValueChanged olay için bir olay işleyicisi ekleyin. Bu işleyici olarak myScaleTransform ait ScaleX ve ScaleY özelliklerini güncellemek: Bu yardımcı olur

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

Umut.

1

eşdeğerdir - bu düzeltilecektir. Sen gerçekten aynı

için

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

gibi bir şey kullanmak gerekir