C# WPF DataGrid 在删除了数据源中的一行,但是在UI界面用没有删除对应的行,怎么回事?如何改?
Tagt1=newTag();t1.TagName=tagname;t1.TagValue=tagvalue;tagsource.RemoveAt(0);TagInfo....
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界面确没有?有哪位大神知道啊,帮下忙,小弟感激不尽。 展开
t1.TagName = tagname;
t1.TagValue = tagvalue;
tagsource.RemoveAt(0);
TagInfo.ItemsSource = tagsource;
其中TagInfo是对应DataGrid的名称,Tag是自定义的类,tagsource是List<Tag>,现在的问题是我原来的tagsource删除了index为0的一行,但UI界面确没有?有哪位大神知道啊,帮下忙,小弟感激不尽。 展开
3个回答
展开全部
这是由于你的数据源不是感知类型所造成的,这需要你手动刷新界面,但这样就放弃了WPF数据性绑定的优点。 你可把 tagsource 原来的类型List<Tag> 改变为 ObservableCollection<Tag> , 这样在你删除数据源中的一行时, ObservableCollection类型的数据源会自动通知UI控件数据源已经变更了。不用象jielizao110所说再重新绑定一下。
另 ObservableCollection 定义在System.Collections.ObjectModel中,使用它时不要忘记在程序中
加上 using System.Collections.ObjectModel;
你如果写WPF架构的程序,建议你学习一下MVVM模式,并了解一下MvvmLight
另 ObservableCollection 定义在System.Collections.ObjectModel中,使用它时不要忘记在程序中
加上 using System.Collections.ObjectModel;
你如果写WPF架构的程序,建议你学习一下MVVM模式,并了解一下MvvmLight
展开全部
众所周知,wpf的数据绑定成员分为三块:绑定源(source),绑定目标(target),绑定本身(binding)。你数据源发生变更前台显示却依然没变,说明后台变化没有“通知”到前台。即数据源本身没实现INotifyPropertyChanged接口。最简单的方法就是将你绑定的List<Tag>改成 ObservableCollection<Tag>就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
删除后,再从新绑定一下,Databind()好像这个函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询