MVVM/ObservableCollection问题

Ran*_*der 4 silverlight wpf mvvm

我有以下XAML:

   <Grid x:Name="LayoutRoot">
        <sdk:DataGrid AutoGenerateColumns="True" Margin="46,38,0,40" x:Name="FamilyListGrid" HorizontalAlignment="Left" Width="475" 
               ItemsSource="{Binding FamilyList}"
               SelectedItem="{Binding SelectedFamily, Mode=TwoWay}" />
    </Grid>
Run Code Online (Sandbox Code Playgroud)

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");
        }
    }
Run Code Online (Sandbox Code Playgroud)

HCL*_*HCL 6

ObservableCollection<T>实现INotifyCollectionChanged,它通知已注册的事件处理程序有关集合中的更改(添加,删除,排序项).但是,DataGrid必须知道您的某个业务对象的属性是否已更改为更新网格中的值.为此,INotifyPropertyChanged需要.
ObservableCollection<T>实现也INotifyCollectionChanged.但是,如果集合的属性已更改,则只能用于通知.没有机制让集合检测您的业务对象是否已更改(如果它已经更改,它将注册到您的业务对象的INotifyCollectionChanged :).