2012-06-05 38 views
0

簡體中文,我有一個ResourceDictionary,它包含一個DataTemplate和一個ViewModel-Class。WPF DataTemplate訪問同一ResourceDictionary中的資源

<ResourceDictionary> 
    <DataTemplate DataType="Whatever"> 
     <ListBox ItemsSource="{Binding Source={StaticResource MyViewModel}, Path=SomeGlobalData}" /> 
    </DataTemplate> 

    <MyViewModelClass x:Key="MyViewModel" /> 
</ResourceDictionary> 

當然綁定不起作用(它會觸發異常),因爲DataType沒有資源'MyViewModel'。但是在VisualTree中,獲取DataTemplated的「事物」是ResourceDictionary合併到其資源的對象的子對象,因此可能有一種方法可以在運行時訪問它。

所以我的問題是:是否有任何干淨的方式來訪問DataTemplate中的'MyViewModel'?

回答

0

您的問題是這些資源實例化的順序,以及您使用StaticResourceDynamicResource的事實。

A StaticResource通過查找對已定義資源的引用來爲任何XAML屬性屬性提供值。嘗試瞭解更多關於這個問題。

因此,如果您仍計劃使用StaticResource,請將您的視圖模型移動到數據模板上方。

+0

如果您仍然有問題,請提供更多信息,但是如果您想查看我的測試項目,請看看: http://sdrv.ms/M8OfB9 這是一個skydrive鏈接。 –