ItemsSource数据源 或 集合属性 的定义 ——> 的数据源定义(典型)

       在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; }
          }

原文地址:https://www.cnblogs.com/changbaishan/p/3520384.html