コレクションが更新されたときにWPF ContextMenuデータバインディングが正常に更新されないのはなぜですか?ただし、ItemTemplateはコンテキストメニューのテキストを正しく表示していますか?コレクションがフィルタ処理された後、WPF Databindingが更新されないのはなぜですか?
ObservableCollectionを更新しようとしないと、このコードは以下のコードで機能します。基礎となるObservableCollectionが更新されると、DataTemplateは問題なく更新され、新しいMenuItemテキストが期待通りに表示されます。しかし、リフレッシュが発生した後、MenuItem.TagはNothingを返していますか?
データストアの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でFilterを削除すると、問題は発生しません。また、MenuItem.Tagバインディングにコンバーターを追加しました。これは、フィルターが適用された後に呼び出されず、MenuItem.TagがNothingに設定されます。
これはどれですか? –