C# ListView与DataTable绑定,删除行后不更新

C# ListView与DataTable绑定,删除行后不更新,c#,.net,wpf,binding,ado.net,C#,.net,Wpf,Binding,Ado.net,所以最基本的是:我有一个窗口,上面有一个ListView,它由我的网格的datacontext填充: mainGrid.SetBinding(Grid.DataContextProperty, new Binding() { Source = new DataView() { Table = SQLHandler.GetHandler[classType.ToString()] } } ); 在xaml中: <ListVie

所以最基本的是:我有一个窗口,上面有一个ListView,它由我的网格的datacontext填充:

mainGrid.SetBinding(Grid.DataContextProperty, 
    new Binding() { 
        Source = new DataView() 
            { Table = SQLHandler.GetHandler[classType.ToString()] } 
    }
);
在xaml中:

<ListView Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" ItemsSource="{Binding}">
其中GetDataSet是:

public DataSet GetDataSet
{
    get { return ds; }
}
我怎样才能做到这一点?当我删除其他窗口中的一行并关闭该行时,主窗口的listview不会自动更新。 我唯一的选择是打开一个刷新按钮,然后重新绑定datacontext属性,当然它会工作,但我的目标是拥有一个“实时”更新系统,这毕竟是绑定的目的

我尝试的是:SqlExecuter中的GetDataSet:实现了inotifypropertychanged接口,但没有任何更改。我不能在SqlHandler中的索引器上实现inotifypropertychanged,因为它没有setter,我总是从代码后面访问表,我的sqldataadapter正在填充它们(Fill方法)


p、 s:我真的不打算创建一个ObservableCollection,因为我90%的代码都应该重写,当我删除一行时,我会清除数据集并重新填充,所以我甚至不希望它注意到每一个更改,当我重新填充数据表时,我的listview应该知道。。和刷新自身

您可能需要将绑定模式设置为双向:

Mode = BindingMode.TwoWay

由于一些不明显的原因,WPF默认为单向绑定。希望有帮助。我不是很了解情况,但是我已经看到了这个问题,简单的数据绑定到ObservableCollections,双向绑定解决了这个问题。

我认为使用第二个窗口作为弹出窗口可能是这里的问题。如果您在同一页面上进行编辑,则可以使用简单的

ListView1.DataBind()
在delete命令末尾刷新列表的内容。或者,如果重新绘制而不是重新加载页面,则可以使用IsPostBack方法更新列表

您可以尝试从另一个窗口调用页面名,然后调用列表视图,但我不确定您是否可以从另一个窗口执行此类命令

或者,您可以在不同的页面上进行编辑,而不是在单独的窗口上进行编辑,这样当您返回到原始页面时,列表视图将被重新绘制

像你一样,我相信有一个更简单的方法来解决你的问题,但不幸的是我不知道

ListView1.DataBind()