【发布时间】:2011-11-04 21:01:18
【问题描述】:
我有这个绑定到可观察项目集合的数据网格,如下所示:
<DataGrid ItemsSource="{Binding Path=MyItems}">
然后,其中一列通过一个简单的转换器绑定到 MyItems 的一个属性,该转换器将 bool 切换为图像路径。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Name="DownloadedIcon" Source="{Binding Converter={StaticResource BoolToImageCheckmark}, ConverterParameter=IsDownloaded, UpdateSourceTrigger=PropertyChanged}" Width="16" Height="16" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
属性本身 IsDownloaded 完全实现了 INotifyPropertyChanged。
这可以正常工作,因为显示的数据与集合的值匹配,并且图像列根据属性值正确显示图像。
当属性发生变化时,麻烦就来了。如果我直接在属性上绑定文本列,则更新属性时内容将更新。但是,通过转换器的图像列将不会收到更新通知。
有什么想法吗?
【问题讨论】:
-
提供不请自来的建议,如果您只使用样式触发器,这种情况看起来确实会简单得多(即:折腾转换器)。
标签: c# wpf binding mvvm datagrid