我對WPF數據綁定有點困惑。我已經嘗試了很多示例,但我認爲我不瞭解這個主題的基礎知識。WPF DataGrid綁定混淆
我有以下datagrid,綁定到一個ObservableCollection(Of T),其中T類有一個名稱屬性顯示在datagrid列中。我的T類還實現了INotifyPropertyChanged,並在Name屬性更改時正確觸發事件。
<DataGrid Grid.Row="1" Name="MyDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding}" >
<DataGrid.Columns>
<DataGridTextColumn x:Name="NameColumn" Header="Name" Binding="{Binding Name}" />
</DataGrid.Columns>
</DataGrid>
然後,在代碼隱藏類中,我有一個底層的數據網格集合。
public ObservableCollection<T> MyCollection
{
get;
set;
}
最後,當我的應用程序啓動時,我加載「MyCollection」屬性並告訴datagrid使用該集合。
public void InitApp()
{
MyCollection = [... taking data from somewhere ...];
MyDataGrid.ItemsSource = MyCollection;
}
這一切都工作正常(數據顯示正常)。但是,如果我重新加載集合(從另一個地方再次獲取完全不同的數據),如果我不再執行MyDataGrid.ItemsSource = MyCollection;指令,數據網格不會更新。
我認爲每次重新載入數據時都使用XXX.ItemsSource = YYY不是一個好習慣,所以我猜我做錯了什麼。在一些例子中,我看到了XAML的DataGrid是綁定的,如:
<DataGrid ItemsSource="{Binding CollectionName}">
...
</DataGrid>
,我猜是針對使用該集合,因此,有沒有必要做.ItemsSource編程...但我不能讓它跑。
任何人都可以看到隧道盡頭的燈光嗎?
你將不得不執行INotifyPropertyChanged以提高PropertyChanged事件。如果您正在使用ObservableCollection,那麼您無需爲提高事件而煩惱。只需將MyCollection = new ObservableCollection();在您的構造函數中,然後將在您的InitApp方法中加載的項目添加到MyCollection中。這一切都假設您在數據網格中使用以下綁定:ItemsSource =「{Binding MyCollection}」 –
Bijington