Почему моя привязка данных WPF ContextMenu не обновляется должным образом при обновлении коллекции, однако ItemTemplate правильно отображает текст контекстного меню?
В приведенном ниже коде это работает, когда я не пытаюсь обновить 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.