我有一个数据网格,它绑定到一个CollectionViewSource,该CollectionViewSource绑定到一个ObservableCollection。按照指南的步骤设置如下:
我的Persons类:
数据网格绑定:
上述工作正常。我的问题是,为什么我需要在代码后台中设置collectionviewsource.source,使用cvsPersons.Source = _Persons;?我认为我在第一个代码片段中的xaml已经完成了这个任务:
如果我需要所有这些后端代码,那么 XAML 数据绑定代码似乎毫无益处,我可能只需在后台代码中完成所有操作。根据我的理解(也许只是片面的),在后台代码中只需要引用由 XAML 设置的实例即可,例如:
如果我不写_cvsPersons.Source = _Persons;,那么我的数据表格就不会被填充。目前我的XAML不能完成这个任务。我想我的问题更多是概念上的。
我的Persons类:
public class Persons : ObservableCollection<Person>
{
//...
}
XAML 数据绑定:
<Window.Resources>
<local:Persons x:Key="_Persons"/>
<CollectionViewSource x:Key="cvsPersons" Source="{StaticResource _Persons}" />
</Window.Resources>
数据网格绑定:
<DataGrid x:Name="myDataGrid" ItemsSource="{Binding Source={StaticResource cvsPersons}}"/>
代码背后:
_Persons = (Persons)this.Resources["_Persons"];
_persons = //some method to fill perons;
cvsPersons = (CollectionViewSource)this.Resources["cvsPersons"];
cvsPersons.Source = _Persons;
上述工作正常。我的问题是,为什么我需要在代码后台中设置collectionviewsource.source,使用cvsPersons.Source = _Persons;?我认为我在第一个代码片段中的xaml已经完成了这个任务:
_cvsPersons.Source = _Persons;
如果我需要所有这些后端代码,那么 XAML 数据绑定代码似乎毫无益处,我可能只需在后台代码中完成所有操作。根据我的理解(也许只是片面的),在后台代码中只需要引用由 XAML 设置的实例即可,例如:
_Persons = (Persons)this.Resources["_Persons"];
_persons = //some method to fill perons;
cvsPersons = (CollectionViewSource)this.Resources["cvsPersons"];
如果我不写_cvsPersons.Source = _Persons;,那么我的数据表格就不会被填充。目前我的XAML不能完成这个任务。我想我的问题更多是概念上的。