2011-02-28 1 views
3

コードビハインドでグラフィックスサイズを調整するために、いくつかのグラフィックスをスライダにデータバインドしようとしています。 私はさまざまな方法を試みましたが、ScaleTransformのScaleXプロパティをC#コードでバインドする方法が見つかりません。ScaleTransformのScaleXにC#コード(XAMLではない)でSetBindingを設定する方法は?

を(私はそう何XAML、実行時のコードでこれを発生しないよ)ここでは、ScaleTransformSliderに名前を与える必要が

Line lR = new Line(); 
lR.X1 = 0; 
lR.Y1 = 0; 
lR.X2 = 150; 
lR.Y2 = 150; 
lR.Stroke = new SolidColorBrush(Colors.Blue); 
lR.StrokeThickness = 2; 

ScaleTransform lRSt = new ScaleTransform(); 
lR.RenderTransform = lRSt; 

Slider sliderR = new Slider(); 
sliderR.Minimum = 1; 
sliderR.Maximum = 3; 
sliderR.Value = 1; 
sliderR.TickPlacement = TickPlacement.BottomRight; 
sliderR.TickFrequency = 0.2; 
sliderR.IsSnapToTickEnabled = true; 

/* Set Binding between Slider and Canvas Children */ 
Binding sliderRBind1 = new Binding(); 
sliderRBind1.Source = sliderRBind1; 
sliderRBind1.Path = new PropertyPath("Value"); 
BindingOperations.SetBinding(lRSt, ScaleTransform.ScaleXProperty, sliderRBind1); 

答えて

5

まず動作しない私のサンプルコードは、ありますXAMLで

この場合、ボタン

<Button.RenderTransform> 
    <ScaleTransform x:Name="btnScaleTransform" /> 
</Button.RenderTransform> 

次にあなたがBindingを作成して、ワイヤトンにBindingOperations.SetBindingを使用一緒に抱擁。

var aBinding = new Binding(); 
aBinding.ElementName = "slider1"; // name of the slider 
aBinding.Path = new PropertyPath("Value"); 

BindingOperations.SetBinding(
    btnScaleTransform, // the ScaleTransform to bind to 
    ScaleTransform.ScaleXProperty, 
    aBinding);    

編集:
あなたもコードでスライダーを宣言したい場合は、.Source代わりの.ElementName

var slider1 = new Slider(); 
grid1.Children.Add(slider1); 

var aBinding = new Binding(); 
aBinding.Source = slider1; 
aBinding.Path = new PropertyPath("Value"); 
+0

感謝を使用しています。私はあなたの答えに応じて私のコードを修正したが、まだそれを動作させることはできません。私は自分の質問を編集し、編集したコードを私の質問に投稿しました。問題がどこにあるのか見てみてください。 – KMC

+1

@KMC: 'sliderRBind1.Source = sliderRBind1;'を 'sliderRBind1.Source = sliderR ;;に置き換えてください。 –

+0

opps。不注意だった。それを指摘してくれてありがとう。 – KMC

関連する問題