爲什麼我的WPF ContextMenu數據綁定在更新集合時沒有按預期更新,但是ItemTemplate正確顯示上下文菜單文本?爲什麼WPF Databinding在收集過濾後沒有更新?
在下面的代碼中,當我不嘗試更新ObservableCollection時,可以使用它。當更新底層ObservableCollection時,DataTemplate更新沒有問題,並按預期顯示新的MenuItem文本。但是,刷新後MenuItem.Tag沒有返回什麼?
數據綁定MenuItem.Tag在第一次加載集合時起作用,但不是在我更新之後。關於如何找到此錯誤的任何想法?部分XAML代碼如下所示:
<ListBox ItemsSource="{Binding Source={StaticResource ListBoxViewSource}}">
<ListBox.ItemTemplate>
<DataTemplate>
<WrapPanel>
<WrapPanel.ContextMenu>
<ContextMenu>
<Separator/>
<MenuItem ItemsSource="{Binding Source={StaticResource ContextViewSource}}" ItemTemplate="{StaticResource DataTemplate}">
<MenuItem.Tag>
<Binding Path="ID" Source="{StaticResource ContextViewSource}"/>
</MenuItem.Tag>
更新#1:這個問題似乎涉及到CollectionViewSource和過濾器不更新已經發生並已刪除項目後濾波MenuItem.Tag結合。我添加了CollectionViewSource.View.Refresh()集合將會改變,但是這仍然不能解決問題。
更新#2我已經實施了INotifyPropertyChanged,它不利於過濾問題。如果我刪除CollectionViewSource上的過濾器,則不會發生該問題。我還在MenuItem.Tag綁定中添加了一個轉換器,並且在應用過濾並且將MenuItem.Tag設置爲Nothing之後不會調用該轉換器。
您是否認爲這一個呢? – 2013-05-12 19:09:42