1. 程式人生 > >WPF datagrid繫結list容器無法更新顯示

WPF datagrid繫結list容器無法更新顯示

Xml程式碼片段:

<DataGrid x:Name="DataGridGap_y"  RowHeaderWidth="0"  AlternationCount="2" Grid.Row="1" Grid.Column="0"   AutoGenerateColumns="False" HorizontalScrollBarVisibility="Hidden" VerticalGridLinesBrush="#FFBCC1BC" HorizontalGridLinesBrush="#FFBCC1BC">

                    <DataGrid.Columns>                         <DataGridTextColumn Width="*" Binding="{Binding Index}">                             <DataGridTextColumn.Header>                                 <TextBlock Text="索引" Foreground="White"/>                             </DataGridTextColumn.Header>                         </DataGridTextColumn>

                        <DataGridTextColumn Width="*" Binding="{Binding Val, Mode=TwoWay}">                             <DataGridTextColumn.Header>                                 <TextBlock Text="Y" Foreground="White"/>                             </DataGridTextColumn.Header>                         </DataGridTextColumn>

Xml.cs資料繫結:

 public void LoadParameter()         {             XdataItems.Clear();             YdataItems.Clear();             for (int i = 0; i < OledRecipeParameter.Instance.XDirectionCellGap.Count; i++)             {                 XdataItems.Add(new dataItem(i + 1,OledRecipeParameter.Instance.XDirectionCellGap[i]));             }             for (int i = 0; i < OledRecipeParameter.Instance.YDirectionCellGap.Count; i++)             {                 YdataItems.Add(new dataItem(i + 1, OledRecipeParameter.Instance.YDirectionCellGap[i]));             }             DataGridGap_x.ItemsSource = XdataItems;             DataGridGap_y.ItemsSource = YdataItems;

 }

存在的問題:

以List作為繫結資料的容器時 :

public List<dataItem> XdataItems = new List<dataItem>(); public List<dataItem> YdataItems = new List<dataItem>();

如果想要更新xml繫結的資料容器時,xml介面不能顯示新的繫結資料,只能顯示最初始的繫結資料

解決辦法:

public ObservableCollection<dataItem> XdataItems = new ObservableCollection<dataItem>();         public ObservableCollection<dataItem> YdataItems = new ObservableCollection<dataItem>();

將xml需要繫結的資料,從list<T>替換成ObservableCollection<T>即可