DataGrid 和 ObservableCollection<>:刷新不彻底!

wugamp 2016-12-09 02:08:16
我让 DataGrid.ItemsSource = ObservableCollection<>,发现了这样的现象:
1、DataGrid 里增加或者删除行的时候,ObservableCollection 都能正确刷新。
2、当 ObservableCollection<> 里增加一行的时候,DataGrid 里也会增加一行,但是,如果在DataGrid 里改变正行的值,则 ObservableCollection 不会变化!!

感觉是刷新有问题。
查了一些资料,可以这样写XaML里用 bindMode 或者 UpdateSourceTrigger 来控制刷新。我不想用这个办法,有两个原因:
1、我做界面的时候不写 xaml ,而是直接拉控件上去。我也不想专门为了一个刷新问题去学 xaml。
2、DataGrid 的列是自动产生的,AutoGenerateColumns="True" 。这样是为了能自动根据不同的数据结构产生列。但是, bindMode 或者 UpdateSourceTrigger 都是写在column 里的,现在既然是自动产生列了,当然就没法在 xaml 里写 column。

哪位大侠能告诉我怎么办,谢谢

...全文
785 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wugamp 2016-12-12
  • 打赏
  • 举报
回复
引用 6 楼 D56233577 的回复:
ObservableCollection集合中的项对应的类需要实现INotifyPropertyChanged接口。 如果嫌INotifyPropertyChanged麻烦,可以直接继承DependencyObject,属性全部写成依赖项属性。 以上是标准答案
多谢诸位指点。试着用 iNotifyPropertyChanged ,似乎好点了。
D56233577 2016-12-09
  • 打赏
  • 举报
回复
ObservableCollection集合中的项对应的类需要实现INotifyPropertyChanged接口。 如果嫌INotifyPropertyChanged麻烦,可以直接继承DependencyObject,属性全部写成依赖项属性。 以上是标准答案
wugamp 2016-12-09
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
就算是列可变,在后台也可以手动添加Column并设置binding到相应的属性
请赐教,谢谢!!
exception92 2016-12-09
  • 打赏
  • 举报
回复
引用 3 楼 wugamp 的回复:
[quote=引用 2 楼 duanzi_peng 的回复:] 就算是列可变,在后台也可以手动添加Column并设置binding到相应的属性
DataGrid 的属性对话框里根本就没有设置 BindMode 和 UpdateSourceTrigger 的地方。如果你说的“后台”指编写 xaml 代码,那我只好放弃。我还是习惯了用鼠标放置控件的方式。其实最早 微软推出 MFC 的时候,也是得用代码来生成界面,那真是痛苦。后来到了 VC6.0,可以直接鼠标做界面,好多了。(当然最容易用的还是 DELPHI,可惜现在没了)不明白现在怎么又退回到代码方式了。 [/quote] 那你放弃吧
wugamp 2016-12-09
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
就算是列可变,在后台也可以手动添加Column并设置binding到相应的属性
DataGrid 的属性对话框里根本就没有设置 BindMode 和 UpdateSourceTrigger 的地方。如果你说的“后台”指编写 xaml 代码,那我只好放弃。我还是习惯了用鼠标放置控件的方式。其实最早 微软推出 MFC 的时候,也是得用代码来生成界面,那真是痛苦。后来到了 VC6.0,可以直接鼠标做界面,好多了。(当然最容易用的还是 DELPHI,可惜现在没了)不明白现在怎么又退回到代码方式了。
exception92 2016-12-09
  • 打赏
  • 举报
回复
就算是列可变,在后台也可以手动添加Column并设置binding到相应的属性
exception92 2016-12-09
  • 打赏
  • 举报
回复
去学 xaml中的binding

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧