1

我已經讀過,SL4引入了從DependencyObjects派生的對象的數據綁定屬性的能力,其中之前的數據綁定僅適用於FrameworkElements或FrameworkContentElements。什麼是Silverlight4中的DependencyObject的DataContext?

但是,我不清楚在綁定DependencyObjects屬性時如何確定綁定源。

在FrameworkElements的情況下,元素的DataContext屬性是源對象(如果DataContext沒有直接設置,則'在樹上行'以查找DataContext。

對於DependencyObjects,我猜測使用的DataContext是XAML文件中'contains'FrameworkElement的DataContext。但是確定這個包含對象的機制是什麼?

在我的特殊情況下,我試圖綁定一個DependencyObject的屬性,它位於ObservableCollection中,它是FrameworkElement的一個屬性。不幸的是,嘗試綁定DependencyObject上的屬性失敗,因爲數據綁定系統似乎使用DependencyObject本身作爲自己的DataContext。它抱怨(在輸出窗口中)該類型沒有綁定表達式中指定名稱的屬性。將相同UserControl中的FrameworkElement的依賴項屬性綁定到相同的綁定表達式是成功的。

回答

1

您是否嘗試過在定義綁定時指定Source或ElementName屬性?

(如:。{Binding Source={StaticResource theFrameworkElement} Path=theObservableCollection[0]}

{Binding ElementName=theFrameworkElement Path=theObservableCollection[0]}

+0

這工作然而,綁定的設置爲是一個StackPanel的的RenderTransform一個ScaleTransform的規模時,我並不需要爲此,我希望我 – mackenir 2010-07-06 09:55:46

+0

我設法讓一個依賴對象的數據綁定工作,這個依賴對象是FrameworkElement的一個屬性 - FE的屬性必須是一個依賴屬性,同時我還得到了綁定工作, FE - 集合必須是一個DependencyObjectCollection。 我發現了這個...重讀t他的文檔!:http://msdn.microsoft.com/en-us/library/cc278072(v=VS.95).aspx – mackenir 2010-07-06 10:29:25