2011-08-18 18 views
5

xaml.cs.で以下のXAMLコードを実行します。C#のRichTextBoxをSliderコントロールにバインドする

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

基本的には、スライダをリッチテキストボックスにバインドしてズームを実行します。

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

答えて

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

わからないあなたがコードで結合を実行する方法を求めている場合、または例えばコード(中ScaleXScaleYプロパティを設定する方法、なし:

は私がしようとしているものです結合)。このような場合は、次のようにします。

まず、ScaleTransformに名前を付けます。 "myScaleTransform":次に

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

mySliderValueChangedイベントのイベントハンドラを追加します。このハンドラでは、myScaleTransformの更新ScaleXScaleYプロパティ:

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

は、この情報がお役に立てば幸いです。

1

と等価である - それが修正されます。 あなたは本当に同じ

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

ようなものを使用する必要があります

関連する問題