5

xaml.cs で実行したい次の XAML コードがあります。

<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;
4

3 に答える 3

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;
于 2011-08-18T20:26:35.173 に答える
1

変換は設定しましたが、バインディングは設定しませんでした。修正されます。あなたは次のようなものを使用する必要があります

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

本当に同じに

于 2011-08-18T20:28:02.380 に答える
1

コードでバインディングを実行する方法を尋ねているのか、それともコードでプロパティScaleXScaleYプロパティを設定する方法を尋ねているのか (たとえば、バインディングなし) は不明です。その場合は、次のようにします。

まず、 「 」ScaleTransformなどの名前を付けます。myScaleTransform

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

ValueChanged次に、 のイベントのイベント ハンドラを追加しmySliderます。このハンドラで、次のScaleXScaleYプロパティを更新しmyScaleTransformます。

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

お役に立てれば。

于 2011-08-18T20:20:18.507 に答える