WPF应用DataGrid数据清除失败求助:代码问题排查
搞定WPF DataGrid清除数据无效的问题
嘿,我知道你现在碰到的这个头疼问题——用dataGrid.Items.Clear()死活清不掉DataGrid里的数据,对吧?这事儿的根源其实很简单:你是通过ItemsSource把数据库数据绑定到DataGrid的,这时候直接操作Items集合根本不顶用。
为啥原代码不行?
当你给DataGrid设置了ItemsSource之后,WPF就把DataGrid的内容控制权完全交给了你绑定的那个数据源(也就是你这里的dataFromDB)。这时候dataGrid.Items其实只是数据源的一个“视图”,你手动去清它,WPF会直接忽略你的操作,因为它只认绑定的数据源变化。
该怎么改?
分两种情况来处理:
如果你的
dataFromDB是ObservableCollection<T>类型
直接清空这个集合就行,ObservableCollection会自动通知UI更新,完全不用管DataGrid的Items:private void clearGrid_Click(object sender, RoutedEventArgs e) { var boundCollection = dataGrid.ItemsSource as ObservableCollection<YourDataType>; boundCollection?.Clear(); }(记得把
YourDataType换成你实际的实体类型哦)如果
dataFromDB是普通集合(比如List<T>)
直接把ItemsSource设为null,或者替换成一个空集合:private void clearGrid_Click(object sender, RoutedEventArgs e) { dataGrid.ItemsSource = null; // 要是想保持绑定的结构,也可以换成空集合 // dataGrid.ItemsSource = new List<YourDataType>(); }
这样改完之后,点击按钮就能顺利清除DataGrid里的数据啦!
内容的提问来源于stack exchange,提问作者Cypriano
相关产品推荐
相关产品推荐

