绑定WPF ListView到Dictionary仅在第一次更改时更新
本文关键字:第一次 更新 int ListView WPF Dictionary string 绑定 | 更新日期: 2023-09-27 18:09:39
我已经将我的ListView绑定到字典,但它只是第一次更新,我添加了一些东西到字典。任何后续更改都不会更新。
WPF:
<ListView Name="LogLevelListView" ItemsSource="{Binding MyDictionary, Mode=TwoWay}" >
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="Auto" DisplayMemberBinding="{Binding Key}" />
<GridViewColumn Header="Level" Width="Auto" DisplayMemberBinding="{Binding Value}" />
</GridView>
</ListView.View>
</ListView>
c#代码:MyDictionary.Add(MyKey, MyValue);
OnPropertyChanged("MyDictionary");
知道为什么只有第一个更新工作吗?
你应该为ObservableCollection实例使用一个实现INotifyCollectionChanged
的集合
表示一个动态数据集合,当项目被添加、删除,或者当整个列表被刷新时。
如果您以这种方式使用绑定,则由于ItemsControl.ItemsSource
的实现方式,您的集合将不会更新。
转到第1687行,您将看到如下内容:
if (_collectionView == view)
return;
您的集合引用是相同的,因此它将永远不会刷新。
这就是为什么它只在第一次更新时有效
你可以看看Dr. WPF对ObservableDictionary的实现。