如何在C#代码(不是XAML)中将SetBinding设置为ScaleTransform的ScaleX?

KMC*_*KMC 3 c# data-binding

我试图将一些图形数据绑定到滑块以调整代码隐藏中的图形大小.我尝试了各种方法,但我找不到在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)

Alb*_*nbo 5

首先,您需要在XAML中提供名称ScaleTransformSlider名称

在这种情况下一个按钮

<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)