【发布时间】:2014-03-30 15:50:28
【问题描述】:
我对 WPF 数据绑定有点困惑。我尝试了很多示例,但我认为我不了解该主题的基础知识。
我有以下数据网格,绑定到 ObservableCollection(Of T),其中 T 类有一个 Name 属性,显示在 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”属性并告诉数据网格使用该集合。
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 ......但我无法让它运行。
谁能告诉我隧道尽头的光?
【问题讨论】:
标签: c# wpf xaml binding datagrid