2011-02-28 50 views
3

我想將一些圖形數據綁定到一個滑塊來調整代碼隱藏的圖形大小。 我嘗試了各種方法,但是我找不到在C#代碼中綁定ScaleTransform的ScaleX屬性的方法。 (我在運行時代碼生成這一點,所以沒有XAML)如何在C#代碼(而不是XAML)中設置綁定到ScaleTransform的ScaleX?

這裏是我的示例代碼,它不工作

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

首先,你需要給ScaleTransformSlider名稱在XAML

在這種情況下,一個按鈕

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

然後創建一個Binding並使用BindingOperations.SetBinding來將T共同努力。

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 2011-03-01 05:49:56

+1

@KMC:將'sliderRBind1.Source = sliderRBind1;'替換爲'sliderRBind1.Source = sliderR;' – 2011-03-01 06:10:46

+0

opps。是粗心的。謝謝你指出。 – KMC 2011-03-01 06:33:51

相關問題