2013-08-29 1 views
0

ViewModel AppleItems가있는 Apple에 문의하십시오. Apple ViewModel의 UI에는 AppleNote라는 항목이있는 AppleNote라는 중첩 ViewModel이 있습니다. Apple ViewModel의 UI를 사용 중일 때, AppleNote보기 모델로 이동할 수있는 아이콘이 있습니다. 내가 그것을하고있는 방법은 아래 코드에서 보여주는 eventagregators를 사용하고있다. DelegateCommand로 바인딩을 사용하고 있습니다. 제 질문은 Item # 3 또는 Apple ViewModel의 AppleItem 중 다른 항목에있을 때 해당 항목에 대한 AppleNote를 누르면 올바른 viewModel로 연결되지만 그 viewModel의 AppleItem보기로 다시 전환하려면, AppleItems의 첫 번째 항목 만 있습니다. AppleItems viewModel로 돌아 가면 어디에서 왔는지 항목을 유지할 수 있다고 어떻게 알 수 있습니까? 혼란이 있으면 알려주세요. 그래서 분명히 할 수 있습니다. > 가지고 - - 작동하지 않는 작업 만 다시 특정 항목에 대한 것입니다 AppleNote에 특정 AppleItem 위해 가기> AppleItems 다른 중첩 된 ViewModel을 탐색하는 방법은 무엇입니까?

   | 

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

AppleViewModel : 여기

을 요약 한 것입니다. 내 데이터 클래스에 직접 INotifyPropertyChanged 인터페이스를 구현으로

private void AppleCommandExecute(object commandParameter) 
    { 

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


       Data = ValueId.ToString() 
      }); 
    } 

답변

1

, 나는 중첩 된 뷰 모델이없는,하지만 난 중첩 또는 계층 적 데이터 클래스했다 않습니다. 내 기본 컬렉션 클래스에서 컬렉션의 항목과 동일한 유형의 CurrentItem이라는 속성이 있습니다.

이러한 컬렉션 중 하나를 컬렉션 컨트롤의 ItemsSource 속성에 바인딩하면 CurrentItem 속성을 컨트롤의 SelectedItem 속성에도 바인딩합니다. 이것은 본질적으로 각 컬렉션의 현재 항목이 무엇인지 항상 알고 있다는 것을 의미합니다.

CurrentItem 속성 중 하나를 구현하면 AppleItem 또는 AppleNote이 항상 선택됩니다. 이 없으면 컬렉션 클래스에 이러한 속성을 추가 할 수 없습니다. 대신보기 모델에 올바른 유형의 속성을 추가 할 수 있습니다. 요점은 항상 SelectedItem 속성에 바인딩하는 경우 선택한 항목을 항상 알 수 있다는 것입니다.