在Xaml中:
ItemsSource="{Binding Path=GridDataSource.PoliceforceDataSource}"
在ViewModel中:
ObservableCollection<PoliceData> policeforceDataSource = new ObservableCollection<PoliceData>();
public IEnumerable<PoliceData> PoliceforceDataSource
{
get { return policeforceDataSource; }
}
说明:
1:属性PoliceforceDataSource是只读的,并且IEnumerable<T>没有Add、Remove等可更改集合的方法,所以对外只能提供“只读”的数据源(通常使用IEnumerable<T>来实现)
2:如果要对数据源进行更改,只能在定义属性的类的内部通过“操作”policeforceDataSource字段来实现,该字段的更改会自动通知“目标”
另外,如果需要“集合属性”对外只读(即 不可以 “直接”给 属性 赋值),但可以通过属性的Add、Remove等方法更改集合(即使 集合本身 发生改变),则可以使用IList、ICollection、List等,如下面的例子:
ObservableCollection<TwoLevelTreeNodeViewModel> childNodes;
public IList<TwoLevelTreeNodeViewModel> ChildNodes
{
get { return childNodes; }
}