Привязка элемента управления silder к RotateTransform во время выполнения в Silverlight 4? - PullRequest
0 голосов
/ 29 января 2011

Я знаю, что вы можете сделать это динамически в XAML, но как вы можете сделать это в коде?

У меня есть прямоугольник, который нарисован пользователем, и я хочу прикрепить ползунок к rotatetransform,через код.

Помощь?

Ответы [ 2 ]

1 голос
/ 29 января 2011

Странно, что у класса Transform нет метода SetBinding().Вот решение этой проблемы:

var rect = new Rectangle { Width = 100, Height = 60, Fill = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0)) };

var t = 
    XamlReader.Load("<RotateTransform xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' "+
            "Angle='{Binding Value, ElementName=slider1}'/>") as RotateTransform;
rect.RenderTransform = t;
0 голосов
/ 29 января 2011

Вы можете сделать это с помощью anser, предоставленного Vorrtex, загрузив XAML во время выполнения, однако в Silverlight 4.0 добавлена ​​возможность привязки к объектам зависимости, поэтому теперь вы можете связывать таким вещам, как преобразования, которые наследуются от объекта зависимости. Используя класс BindingOperations, вы можете передать объект DependancyObject, свойство, которое вы хотите привязать, и выражение привязки.

//w is a UIElement
//rot is a rotate transform

w.RenderTransform = rot;

Binding b = new Binding("Value") { Source = RotationSlider };
BindingOperations.SetBinding(rot, RotateTransform.AngleProperty, b);
...