2010-10-04 30 views
3

我嘗試在代碼(c#)中將silverlight 4中的translateTransform和compositeTransform綁定在一​​起。我無法在xaml中執行此操作,因爲UI元素是動態加載的。我只需要Xoffset。 compositeTransform是源代碼。我有流動的代碼,但它不工作:在silverlight中綁定兩個不同的轉換4

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

只要子控件要麼自己的DataContext集,或繼承一個從父容器,沒有任何理由,你不能有子控件綁定。你如何加載/創建你的動態控件? – 2010-10-04 11:03:21

回答

0

由於TranslateTransform不是FrameworkElement的,爲了是的結合它必須滿足這些條件(從MSDN)一個目標:

在Silverlight 4中,目標也可以是一個DependencyProperty在以下情況下是DependencyObject:

  • DependencyObject是FrameworkElement屬性的值。

  • DependencyObject位於一個集合中,該集合是FrameworkElement屬性的值(例如,Resources屬性)。

  • DependencyObject位於DependencyObjectCollection中。

所以嘗試設置反式 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); 
1

看起來對我來說,就好像: -

Binding transBind = new Binding("Value"); 

應該

Binding transBind = new Binding("TranslateX"); 

複合變換沒有「價值」屬性。

相關問題