2011-09-08 81 views
0

我可能會錯過簡單的東西,請耐心等待。 我有一個包含以下內容的視圖模型:從Child ViewModels接收通知

public ObservableCollection<Person> PersonCollection 
{ 
    get { return personCollection; } 
    set 
    { 
     if (personCollection != value) 
     { 
      personCollection = value; 
      RaisePropertyChanged("PersonCollection"); 
     } 
    } 
} 

然後在另一個視圖模型我:

public ObservableCollection<Person> PersonCollection 
{ 
    get 
    { 
     PersonViewModel vm = (App.Current.Resources["Locator"] as ViewModelLocator).PersonViewModel; 
     return vm.PersonCollection; 
    } 
} 

public PersonViewModel PersonViewModel 
{ 
    get 
    { 
     return ((App.Current.Resources["Locator"] as ViewModelLocator).PersonViewModel) 
    } 
} 

在我的XAML,如果我綁定到PersonCollection然後更新不上我的看法發生,但如果我綁定到PersonViewModel.PersonCollection它。那麼這是做到這一點的「正確」方式,還是有一種方法讓視圖使用第一種方法檢測通知?

回答

1

更改綁定到{Binding PersonViewModel.PersonCollection}

你的包裹PersonCollection屬性沒有變化的通知,所以視圖不知道該屬性已經改變(這當然沒有辦法知道它最初來自PersonViewModel以從得到變化通知它

+0

啊我明白你在說什麼。我想這在你思考時很明顯。因此,在ViewModel中使用實體的方式是根據我的第二種方法在父級內提供子ViewModel的屬性,然後通過該方法進行綁定? – Firedragon