我试图将一些图形数据绑定到滑块以调整代码隐藏中的图形大小.我尝试了各种方法,但我找不到在C#代码中绑定ScaleTransform的ScaleX属性的方法.(我在运行时代码中生成此代码,因此没有XAML)
这是我的示例代码,它不起作用
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);
Run Code Online (Sandbox Code Playgroud)
首先,您需要在XAML中提供名称ScaleTransform和Slider名称
在这种情况下一个按钮
<Button.RenderTransform>
<ScaleTransform x:Name="btnScaleTransform" />
</Button.RenderTransform>
Run Code Online (Sandbox Code Playgroud)
然后你创建一个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);
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您想在代码中声明滑块,则使用.Source而不是.ElementName
var slider1 = new Slider();
grid1.Children.Add(slider1);
var aBinding = new Binding();
aBinding.Source = slider1;
aBinding.Path = new PropertyPath("Value");
Run Code Online (Sandbox Code Playgroud)