none
ListViewItem的数据模板如何绑定dictionary字段的key对应的value内容 RRS feed

  • 问题

  • 一个实体类除了预设的主要属性字段外,还有一个dictionary类型的字段,且范型是dictionary<string,string>。用于存储该实体数据的“扩展属性”,而且要在界面给用户展示数据对象的扩展属性。(类似文件的主要属性和扩展属性一样),扩展属性可以被用户进行添加,修改,删除

    我想让ListViewItem的数据模板能根据该dictionary字段的key值去绑定显示对应的value内容,也就是(dictionary字段名.key)的形式值,当然没有key值存在也不要抛出异常,直接忽略掉,也希望能支持变更通知

    private Dictionary<string,string> property;
            public Dictionary<string, string> Property
            {
                set
                {
                    property = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("Property"));
                    }
                }
                get
                {
                    return property;
                }
            }

    请问相应的绑定表达式怎么写?或者有比dictionary更好的办法吗



    2018年9月29日 5:33

答案

  • 你可以使用转换器来实现从key到value的转换,但无法实现通知功能

    转换器:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.data.ivalueconverter?view=netframework-4.7.2

    https://www.cnblogs.com/tianma3798/p/5927470.html
    2018年9月29日 13:02
  • Hello,

    根据你的描述, 你想绑定Dictionary并且实现通知, 我建议你可以用ObservableDictionary来达到这个目的,在当前的.NET FRAMEWORK中是没有实现了INotifyCollectionChanged和INotifyPropertyChanged的字典集合的,这直接导致了WPF或者中的LISTVIEW等控件不能动态显示集合中的更新。故,我们需要自己实现一个ObservableDictionary。

    关于如是实现Observabledictionary, 你可以参考下面的link:

    https://blog.csdn.net/luminji/article/details/5360888

    Best Regards,

    Cherry


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年10月1日 5:18
    版主

全部回复

  • 你可以使用转换器来实现从key到value的转换,但无法实现通知功能

    转换器:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.data.ivalueconverter?view=netframework-4.7.2

    https://www.cnblogs.com/tianma3798/p/5927470.html
    2018年9月29日 13:02
  • Hello,

    根据你的描述, 你想绑定Dictionary并且实现通知, 我建议你可以用ObservableDictionary来达到这个目的,在当前的.NET FRAMEWORK中是没有实现了INotifyCollectionChanged和INotifyPropertyChanged的字典集合的,这直接导致了WPF或者中的LISTVIEW等控件不能动态显示集合中的更新。故,我们需要自己实现一个ObservableDictionary。

    关于如是实现Observabledictionary, 你可以参考下面的link:

    https://blog.csdn.net/luminji/article/details/5360888

    Best Regards,

    Cherry


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年10月1日 5:18
    版主