我尝试在代码(c#)中的silverlight 4中将translateTransform和compositeTransform绑定在一起。我无法在xaml中执行此操作,因为UIelements是动态加载的。我只需要Xoffset。 compositeTransform是源。我有流动的代码,但它不起作用:
TranslateTransform trans = new TranslateTransform();
Binding transBind = new Binding("Value");
transBind.Source = ((CompositeTransform)SchedulePanel.RenderTransform);
BindingOperations.SetBinding(trans, TranslateTransform.XProperty, transBind);
line.TextChannelName.RenderTransform = trans;
由于
答案 0 :(得分:1)
看起来好像: -
Binding transBind = new Binding("Value");
应该是
Binding transBind = new Binding("TranslateX");
复合变换没有“Value”属性。
答案 1 :(得分:0)
由于TranslateTransform不是FrameworkElement,为了成为绑定的目标,它必须满足以下条件之一(来自MSDN):
在Silverlight 4中,在以下情况下,目标也可以是DependencyObject的DependencyProperty:
DependencyObject是FrameworkElement的属性值。
DependencyObject位于一个集合中,该集合是FrameworkElement属性的值(例如,Resources属性)。
DependencyObject位于DependencyObjectCollection中。
因此,在设置绑定之前,尝试将 trans TranslateTransform设置为TextChannelName 的转换,以便在设置binsing时,即目标。
尝试:
TranslateTransform trans = new TranslateTransform();
line.TextChannelName.RenderTransform = trans;
Binding transBind = new Binding("Value");
transBind.Source = ((CompositeTransform)SchedulePanel.RenderTransform);
BindingOperations.SetBinding(trans, TranslateTransform.XProperty, transBind);