2011-02-28 68 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

相关问题