WPF MvvM DataGrid數據不刷新的原因


后台修改前台不刷新可能的原因:

1.前台頁面沒有寫Binding

2.后台數據定義的字段沒有get和set

3.數據容器沒有使用ObservableCollection

4.字段內容修改時沒有重置數據源

首先簡單舉例界面代碼如下:

<DataGrid Name="DG" ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="姓名" Binding="{Binding Name}" />
</DataGrid.Columns>
</DataGrid>

必須對DataGrid設置   ItemsSource="{Binding}" 

字段設置必須寫  Binding="{Binding Name}" 

對應數據為:

 public class DataItem
 {
        public string Name { get; set; }
 }

字段名稱必須和頁面保持一致,字段必須是屬性,包含get和set

定義成員變量:

 ObservableCollection<DataItem> m_data = new ObservableCollection<DataItem>(); 

關聯前后台數據:

  DG.ItemsSource = m_data; 

ObservableCollection容器用法類似於List,這玩意可以在增加、刪除(也就是Count發生變化)元素時發出通知。

所以我們在后台增加數據: DataItem cm = new DataItem(); cm.Name = "AA"; m_data.Add(cm);     界面會發生變化

在后台刪除數據: m_data_data.RemoveAt(0);    界面也會發生變化

但是我們修改數據: m_data[0].Name = "MM";     此時界面並不會發生變化(因為Count沒有發生變化。。。)

所以這個時候 DG.ItemsSource = null; DG.ItemsSource = m_data;  界面就可以變化了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM