在silverlight 4中将两个不同的变换绑定在一起

时间:2010-10-04 09:15:02

标签: c# silverlight

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

由于

2 个答案:

答案 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);