2013-08-29 44 views
0

我有一個ViewModel調用Apple的AppleItems。在Apple ViewModel的UI中,有一個名爲AppleNote的嵌套ViewModel,它具有AppleNote項目。當我在Apple ViewModel的UI上時,有一個圖標可以讓我導航到AppleNote視圖模型。我這樣做的方式是使用eventagregators在下面的代碼中顯示。它使用綁定作爲DelegateCommand。我的問題是,當我在Apple ViewModel的Item#3或AppleItems的任何其他項目中,並且當我爲該Item打開AppleNote時,它會將我帶入正確的viewModel,但是當我想切換回該viewModel的AppleItem視圖時,我剛到AppleItems中的第一個項目。我怎麼知道,當回到AppleItems viewModel保留你來自的項目。如果有任何困惑讓我知道,那麼我可以說清楚。如何在不同的嵌套ViewModels之間導航?

這裏是一個總結:

AppleViewModel - >的 - > AppleItems

   | 

      Has--> AppleNoteViewModel-->Has-->AppleNotesItem 

去一定AppleItem到AppleNote是工作,但要回某些項目不能正常工作。

private void AppleCommandExecute(object commandParameter) 
    { 

      _eventAggregator.Publish 
      (new ChangeValueViewEventArgs 
      { 
       ViewModelType = typeof (AppleViewModel), 


       Data = ValueId.ToString() 
      }); 
    } 

回答

1

正如我在數據類直接實現INotifyPropertyChanged接口,我沒有任何嵌套視圖模型,但我有嵌套或分層數據類。在我的基礎集合類中,我有一個與集合中的項目類型相同的屬性CurrentItem

當我將這些集合之一綁定到集合控件的ItemsSource屬性時,我還將CurrentItem屬性綁定到控件的SelectedItem屬性。這實際上意味着我總是知道每個集合中的當前項目。

如果您執行其中一個CurrentItem屬性,那麼您將始終知道選擇了哪個AppleItemAppleNote。您不需要已將將這些屬性放入集合類中,您只需將正確類型的屬性添加到視圖模型中即可。重點是,如果您始終綁定到SelectedItem屬性,那麼您將始終知道選擇了哪個項目。