绑定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");

知道为什么只有第一个更新工作吗?

绑定WPF ListView到Dictionary<string, int>仅在第一次更改时更新

你应该为ObservableCollection实例使用一个实现INotifyCollectionChanged的集合

表示一个动态数据集合,当项目被添加、删除,或者当整个列表被刷新时。

如果您以这种方式使用绑定,则由于ItemsControl.ItemsSource的实现方式,您的集合将不会更新。

转到第1687行,您将看到如下内容:

if (_collectionView == view)
      return;

您的集合引用是相同的,因此它将永远不会刷新。

这就是为什么它只在第一次更新时有效

你可以看看Dr. WPF对ObservableDictionary的实现。