'ContentTemplate'是一個DataTemplate,它顯示具有成員'FooList'(ObservableCollection)的對象。在DataTemplate中綁定CollectionViewSource
<DataTemplate x:Key="ContentTemplate">
<ListBox ItemsSource="{Binding Path=FOO}">
...
</ListBox>
</DataTemplate>
我需要能夠使用CollectionViewSource過濾FooList。這通常是直截了當的,但我似乎無法讓綁定在DataTemplate中工作。我試圖這樣的:
<DataTemplate x:Key="ContentTemplate">
<DataTemplate.Resources>
<CollectionViewSource x:Key="CVS" Source="{Binding Path=FooList}" Filter="FooFilter"/>
<DataTemplate.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource CVS}}">
我從這個得到的錯誤是:
System.Windows.Data錯誤:2:無法找到目標元素理事FrameworkElement的或FrameworkContentElement上。 BindingExpression:路徑= FooList;的DataItem = NULL;目標元素是'CollectionViewSource'(HashCode = 52991666);目標屬性是'源'(類型'對象')
這聽起來像它尋找'FooList'在CollectionViewSource而不是綁定到DataTemplate的對象。
那麼......我怎麼才能看到正確的對象呢?
我遇到同樣的問題。唯一我能想到的是,CVS不知道綁定的正確來源(你的'FooList'成員),它應該是這個級別的DataContext。有沒有辦法顯式地將CVS上的源設置爲DataTemplate的當前DataContext?再次,應該假設,但這不適合我們兩個。 (你和我的唯一區別是你綁定到一個內部的ListBox,我綁定到一個HierarchicalDataTemplate的子項目以供在treeview中使用,但除此之外,你和我在同一條船上。 – MarqueIV 2010-10-20 16:45:34
在我看來,它不應該有權訪問資源部分中DataTemplate的數據。有誰知道這是否正確? – 2010-12-29 12:02:01