<GrID x:name="LayoutRoot"> <sdk:DataGrID autoGenerateColumns="True" margin="46,38,40" x:name="FamilyListGrID" HorizontalAlignment="left" WIDth="475" ItemsSource="{Binding FamilyList}" SelectedItem="{Binding SelectedFamily,Mode=TwoWay}" /> </GrID>
Binding中使用的我的FamilyList属性是我的视图模型类中的实体的ObservableCollection.我发现我需要在我的FamilyList集合的setter中实现INotifyPropertyChanged,否则绑定不起作用.我的理解是ObservableCollection已经实现了这一点.如果是这种情况,为什么我需要实现notify属性?
如果有帮助,这是我的FamilyList属性定义:
private ObservableCollection<Services.Family> familyList; public ObservableCollection<Services.Family> FamilyList { get { return familyList; } private set { familyList = value; NotifyPropertyChanged("FamilyList"); } }解决方法 的ObservableCollection< T>实现INotifyCollectionChanged,它通知已注册的事件处理程序有关集合中的更改(添加,删除,排序项).但是,DataGrID必须知道您的某个业务对象的属性是否已更改为更新网格中的值.为此,需要INotifyPropertyChanged. 的ObservableCollection< T>实现也INotifyCollectionChanged.但是,如果集合的属性已更改,则只能用于通知.没有机制让集合检测您的业务对象是否已更改(如果它已经更改,它将注册到您的业务对象的INotifyCollectionChanged :). 总结
以上是内存溢出为你收集整理的wpf – MVVM / ObservableCollection问题全部内容,希望文章能够帮你解决wpf – MVVM / ObservableCollection问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)