Wpf 绑定到datagrid,在客户端触发数据库更改

Wpf 绑定到datagrid,在客户端触发数据库更改,wpf,linq-to-sql,data-binding,Wpf,Linq To Sql,Data Binding,我正在编写一个应用程序,它基本上是一个连接到数据库表的DataGrid,非常简单。我正在使用LINQ to SQL并通过一个简单的 dgrid.ItemsSource=_dbcontext.TheTableObjects 该表成功地显示了该表,但是当我从外部(例如从MSSQL)更改数据库值时,DataGrid不会得到更新。我在这里遵循了大多数说明:,除了跳过ObservableCollection的使用,它应该没有区别,对吗 当数据库表的内容在外部发生更改时,我希望绑定更新,从而更新datagr

我正在编写一个应用程序,它基本上是一个连接到数据库表的DataGrid,非常简单。我正在使用LINQ to SQL并通过一个简单的

dgrid.ItemsSource=_dbcontext.TheTableObjects

该表成功地显示了该表,但是当我从外部(例如从MSSQL)更改数据库值时,DataGrid不会得到更新。我在这里遵循了大多数说明:,除了跳过ObservableCollection的使用,它应该没有区别,对吗


当数据库表的内容在外部发生更改时,我希望绑定更新,从而更新datagrid。我本能地对自己说:“这太愚蠢了。。。客户端应用程序如何可能在没有某种轮询的情况下知道数据库内容?……但我也不知道LINQ to SQL到底有多聪明……

jberger提供了最佳答案

你的直觉是正确的。你必须投票。使用ObservableCollection添加、删除将自动传播到DataGrid的增量实例


你的直觉是正确的。你必须投票。使用ObservableCollection添加、删除将自动传播到DataGrid的增量实例。除了显示值之外,应用程序是否还执行其他操作?如果需要热启动其他按钮/功能,则需要在后台执行轮询。如果它是只读的,您可能希望使用ListView/GridView,因为它比DataGrid轻。您可以使用CLR触发器获取通知。我说可能-我没有将此作为答案发布。感谢您的回答,抱歉,请在问题中提出另一个问题,但是:轮询数据库和填充网格的UI干扰最小的方式是什么?目前,我只是在一个Dispatchermer中更新ObservalEQUEUE,每次触发时,我都感觉UI有点滞后。就应用程序响应而言,有没有更好的方法来实现这一点?