WPF如何将Dictionary键值分别绑定到ListView的GridView列
解决方案
要把字典的键和值分别显示在ListView的GridView两列中,核心是利用WPF中Dictionary绑定后每个列表项为KeyValuePair<DateTime, decimal>类型,直接绑定它的Key和Value属性即可。
修改后的XAML代码
<ListView Grid.Row="0" Grid.Column="2" Width="155" Height="Auto" Margin="10" ItemsSource="{Binding MedialDictionary}"> <ListView.View> <GridView> <!-- 绑定字典的Key(DateTime类型),可自定义日期显示格式 --> <GridViewColumn Header="EffectiveDate" DisplayMemberBinding="{Binding Key, StringFormat='yyyy/MM/dd HH:mm:ss'}"/> <!-- 绑定字典的Value(decimal类型) --> <GridViewColumn Header="Value" DisplayMemberBinding="{Binding Value}"/> </GridView> </ListView.View> </ListView>
关键说明
- 当
ListView的ItemsSource绑定到Dictionary时,每个列表项的数据源是KeyValuePair<TKey, TValue>,因此可以直接通过{Binding Key}和{Binding Value}分别获取字典的键和值。 - 针对
DateTime类型的Key,通过StringFormat可以指定自定义显示格式,比如示例中的yyyy/MM/dd HH:mm:ss,你可以根据需求调整为仅显示日期(如yyyy/MM/dd)。 - 如果后续需要动态增删字典中的键值对并让UI自动更新,由于
Dictionary不实现INotifyCollectionChanged接口,你有两种选择:- 每次修改后重新赋值整个
MedialDictionary(借助你已实现的SetProperty触发属性变更通知); - 改用实现了
INotifyCollectionChanged的自定义ObservableDictionary类型。
- 每次修改后重新赋值整个
内容的提问来源于stack exchange,提问作者HyperSquid
相关产品推荐
相关产品推荐

