컬렉션이 업데이트 될 때 WPF ContextMenu 데이터 바인딩이 예상대로 업데이트되지 않지만 ItemTemplate이 컨텍스트 메뉴 텍스트를 올바르게 표시하는 이유는 무엇입니까?컬렉션이 필터링 된 후에 WPF Databinding이 업데이트되지 않는 이유는 무엇입니까?
ObservableCollection을 업데이트하지 않을 때 아래 코드에서이 코드가 작동합니다. 기본 ObservableCollection이 업데이트되면 DataTemplate이 문제없이 업데이트되고 새 MenuItem 텍스트가 예상대로 표시됩니다. 그러나 Refresh가 발생하면 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에서 필터를 제거하면 문제가 발생하지 않습니다. MenuItem.Tag 바인딩에 변환기를 추가했는데 필터링을 적용한 후에 호출되지 않고 MenuItem.Tag가 Nothing으로 설정되었습니다.
이 내용을 파악 했습니까? –