簡體   English   中英

綁定到數據表的數據網格不刷新值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM