[英]DataGrid bound to Datatable not refreshing Values
我有一個綁定到DataTable的DataGrid(“ LastDatasets”)
通過以下代碼在計時器中刷新DataTable時:
if (LastDatasets != null)
{
var maxRow = LastDatasets.Select("id = MAX(id)").FirstOrDefault();
var newds = dataInterface.ReadFromDatabase("SELECT * FROM daten WHERE id > " + dataInterface.SqlSep + "id LIMIT 30", new Dictionary<string, object>() {{"id", maxRow["id"]}});
if (newds != null && newds.Rows.Count > 0)
{
LastDatasets.Merge(newds);
}
}
我的數據表包含我的新數據,但是WPF中的數據網格未刷新!
我使用簡單的綁定,並且.Merge()之后可以看到所有更改。 因此,您應該發布更多代碼以查看發生了什么問題。
<DataGrid ItemsSource="{Binding MyDataTable}" />
vm.cs
MyDataTable.Merge(newdata);
讀取新的數據通話后
DataGrid.Refresh();
如果您正在使用綁定,則使用像這樣
ItemsSource="{Binding yourdatasource,IsAsync=True, Mode=TwoWay}"
DataTable沒有實現INotifyPropertyChanged,因此沒有一種方法可以在屬性更改時通知您的DataGrid。 如果將DataGrid綁定到對象的集合,則每當更改屬性時,該對象都會引發PropertyChanged事件,您會看到值更新。 我相信您的解決方案將按照Ask所說的去做, Refresh
DataGrid的內容,或者將DataGrid綁定到實現INotifyPropety Changed而不是DataTable的對象的集合。
要嘗試的另一件事是在DataGrid上啟用虛擬化 。 默認情況下,應啟用行虛擬化,但是您可以通過設置EnableRowVirtualization = True
來進行雙重檢查。 此外,還要設置EnableColumnVirtualization = true
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.