C# WPF DataGrid 在删除了数据源中的一行,但是在UI界面用没有删除对应的行,怎么回事?如何改?

Tag t1 = new Tag();
t1.TagName = tagname;
t1.TagValue = tagvalue;
tagsource.RemoveAt(0);
TagInfo.ItemsSource = tagsource;
其中TagInfo是对应DataGrid的名称,Tag是自定义的类,tagsource是List<Tag>,现在的问题是我原来的tagsource删除了index为0的一行,但UI界面确没有?有哪位大神知道啊,帮下忙,小弟感激不尽。

这是由于你的数据源不是感知类型所造成的,这需要你手动刷新界面,但这样就放弃了WPF数据性绑定的优点。 你可把 tagsource 原来的类型List<Tag> 改变为 ObservableCollection<Tag> , 这样在你删除数据源中的一行时, ObservableCollection类型的数据源会自动通知UI控件数据源已经变更了。不用象jielizao110所说再重新绑定一下。
另 ObservableCollection 定义在System.Collections.ObjectModel中,使用它时不要忘记在程序中
加上 using System.Collections.ObjectModel;
你如果写WPF架构的程序,建议你学习一下MVVM模式,并了解一下MvvmLight
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-14
  众所周知,wpf的数据绑定成员分为三块:绑定源(source),绑定目标(target),绑定本身(binding)。你数据源发生变更前台显示却依然没变,说明后台变化没有“通知”到前台。即数据源本身没实现INotifyPropertyChanged接口。最简单的方法就是将你绑定的List<Tag>改成 ObservableCollection<Tag>就可以了。
第2个回答  2013-03-13
删除后,再从新绑定一下,Databind()好像这个函数
相似回答