我尝试在代码(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;


谢谢

最佳答案

由于TranslateTransform不是FrameworkElement,因此要成为绑定的目标,它必须满足以下条件之一(来自MSDN):


  在Silverlight 4中,在以下情况下,目标也可以是DependencyObject的DependencyProperty:
  
  
  DependencyObject是FrameworkElement属性的值。
  DependencyObject在一个集合中,该集合是FrameworkElement属性(例如,Resources属性)的值。
  DependencyObject在DependencyObjectCollection中。
  


因此,在设置绑定之前,请尝试将trans TranslateTransform设置为TextChannelName的Transform,以便在设置装箱时确定目标。

尝试:

TranslateTransform trans = new TranslateTransform();
line.TextChannelName.RenderTransform = trans;

Binding transBind = new Binding("Value");
transBind.Source = ((CompositeTransform)SchedulePanel.RenderTransform);
BindingOperations.SetBinding(trans, TranslateTransform.XProperty, transBind);

09-05 17:11