Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ListBox、DataView和DataTable.RejectChanges()_C#_.net_Wpf_Ado.net_Binding - Fatal编程技术网

C# ListBox、DataView和DataTable.RejectChanges()

C# ListBox、DataView和DataTable.RejectChanges(),c#,.net,wpf,ado.net,binding,C#,.net,Wpf,Ado.net,Binding,我有一个绑定到DataView的列表框 <ListBox ItemsSource="{Binding Path=Categories}" DisplayMemberPath="Name"></ListBox> 虽然对基础数据表的所有数据更改(行插入和删除,列值更改)都会自动反映到列表框中,但在执行数据表时,会反映行更改,但不会反映列值更改 我可以理解为什么会发生这种情况(DataTable.RejectChanges不会发出任何列值更改通知),但仍然无法找到任何简单的解

我有一个绑定到DataView的列表框

<ListBox ItemsSource="{Binding Path=Categories}" DisplayMemberPath="Name"></ListBox>
虽然对基础
数据表的所有数据更改(行插入和删除,列值更改)都会自动反映到列表框中,但在执行
数据表时,会反映行更改,但不会反映列值更改

我可以理解为什么会发生这种情况(DataTable.RejectChanges
不会发出任何列值更改通知),但仍然无法找到任何简单的解决方案

我还在
DataTable.RejectChanges()
之后添加了
OnPropertyChanged(“Categories”)
,但仍然没有成功

有什么想法吗


提前谢谢。

当我使用datatables时,我总是使用BindingListCollectionView进行绑定,因为wpf总是隐式地这样做。但是现在我可以使用Refresh()方法刷新ui绑定

public BindingListCollectionView Categories {get; private set;}

this.Categories = (BindingListCollectionView)CollectionViewSource.GetDefaultView(this._TableOfCategories);

//after reject
this.Categories.Refresh()

然而,您的列表框看起来是什么样的(只是您发布的xaml或一些数据模板)?你能发布截图吗?

非常感谢!它起作用了!我的列表框和我的XAML一样简单。但是你为什么提到这个?如果我使用数据模板,这个解决方案有什么问题吗?我只是以前没有在列表框中使用DisplayMemberPath=“Name”,我总是使用DataTemplate。但这一切都很好:)大多数时候我也使用数据模板,但对于这个非常简单的列表框,我认为DisplayMemberPath是最简单的方法:)
public BindingListCollectionView Categories {get; private set;}

this.Categories = (BindingListCollectionView)CollectionViewSource.GetDefaultView(this._TableOfCategories);

//after reject
this.Categories.Refresh()