Как установить привязку к ScaleTransform ScaleX в коде C # (не XAML)? - PullRequest
3 голосов
/ 28 февраля 2011

Я пытаюсь привязать некоторую графику к ползунку, чтобы настроить размер графики в коде позади.Я пробовал разные способы, но не могу найти способ связать свойство ScaleTransform ScaleX в коде C #.(Я генерирую это в коде времени выполнения, поэтому 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);

1 Ответ

5 голосов
/ 28 февраля 2011

Сначала вам нужно дать ScaleTransform и Slider имя в 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);            

Edit:
Если вы хотите объявить ползунок в коде, вы используете .Source вместо .ElementName

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

var aBinding = new Binding();
aBinding.Source = slider1;
aBinding.Path = new PropertyPath("Value");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...