後臺修改前臺不刷新可能的原因: 1.前臺頁面沒有寫Binding 2.後臺數據定義的欄位沒有get和set 3.數據容器沒有使用ObservableCollection 4.欄位內容修改時沒有重置數據源 首先簡單舉例界面代碼如下: <DataGrid Name="DG" ItemsSource="{ ...
後臺修改前臺不刷新可能的原因:
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; 界面就可以變化了