首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF ListView不会更新绑定的字典

是因为字典(Dictionary)类型不支持自动通知属性更改,而ListView控件需要通过属性更改通知来更新绑定的数据。

解决这个问题的方法是使用ObservableDictionary类,它是一个实现了INotifyPropertyChanged接口的可观察字典。通过使用ObservableDictionary,当字典中的键值对发生变化时,可以触发属性更改通知,从而使ListView能够更新绑定的数据。

以下是一个示例代码,演示如何使用ObservableDictionary来解决WPF ListView不会更新绑定的字典的问题:

首先,需要创建一个ObservableDictionary类,实现INotifyPropertyChanged接口:

代码语言:txt
复制
public class ObservableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public new TValue this[TKey key]
    {
        get { return base[key]; }
        set
        {
            base[key] = value;
            OnPropertyChanged(nameof(this[key]));
        }
    }
}

然后,在ViewModel中使用ObservableDictionary作为绑定的数据源:

代码语言:txt
复制
public class MyViewModel : INotifyPropertyChanged
{
    private ObservableDictionary<string, string> myDictionary;

    public ObservableDictionary<string, string> MyDictionary
    {
        get { return myDictionary; }
        set
        {
            myDictionary = value;
            OnPropertyChanged(nameof(MyDictionary));
        }
    }

    // 其他代码...

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

最后,在XAML中将ListView的ItemsSource绑定到MyDictionary:

代码语言:txt
复制
<ListView ItemsSource="{Binding MyDictionary}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Key" DisplayMemberBinding="{Binding Key}" />
            <GridViewColumn Header="Value" DisplayMemberBinding="{Binding Value}" />
        </GridView>
    </ListView.View>
</ListView>

这样,当MyDictionary中的键值对发生变化时,ListView会自动更新绑定的数据。

推荐的腾讯云相关产品:腾讯云数据库TencentDB、腾讯云云服务器CVM、腾讯云对象存储COS等。您可以通过访问腾讯云官网了解更多关于这些产品的详细信息和使用指南。

  • 腾讯云数据库TencentDB:https://cloud.tencent.com/product/cdb
  • 腾讯云云服务器CVM:https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储COS:https://cloud.tencent.com/product/cos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

46分35秒

12.分类型的ListView数据绑定.avi

9分10秒

速学数据结构-栈的原理与实现(Python)

7分1秒

速学数据结构-大O表示法(Python)

领券