2012-11-27 5 views
0

두 개의보기 모델 ViewModelAViewModelB은 모두 을 사용하여 Theme이라는 사용자 설정을 검색합니다. ViewModel B는 해당 설정을 변경하여 데이터베이스에 저장할 수 있습니다. 이 경우 ViewModelA은 해당 테마 값을 업데이트하지 않습니다.
나는 그것뿐만 아니라이를 업데이트 할 수 있도록 적절한 조치 과정을 알아 내기 위해 노력하고 몇 가지 옵션과 함께 올라와있다 :MvvM ViewModel에서 ViewModel 로의 통신

  1. 값이 저장 될 때 (DataService에이 속성 통지를 올릴 확인 나는 이것을 좋아하지 않는다.)
  2. MessengerService를 사용하여 동기화 상태를 유지한다. 다른

어떤 아이디어에

  • 패스 하나의 뷰 모델 (I는 메시지 루프로 실행하는 데 문제가 있어요)? 둘 다 DataServiceA의 동일한 인스턴스를 사용하는 경우

  • +1

    이벤트를 사용하여 conisded 했습니까? ViewModelB가 데이터를 테마에 저장하면 이벤트를 발생시킬 수 있습니다. ViewModelA는 이벤트에 가입하고 데이터 서비스를 호출하여 해당 테마 버전을 새로 고칠 수 있습니다. 그 반대. – ryadavilli

    답변

    0

    , 나는 그것이 DataServiceA도 때 Theme 속성 변경 이벤트를 INotifyPropertyChanged를 구현하고 올릴 것 같은 나쁜 아이디어라고 생각하지 않습니다.

    그런 아이디어가 마음에 들지 않으면 EventAggregator을 사용하고 이벤트를 게시하십시오. 나는 개인적으로 첫 번째 옵션이 충분하다고 생각하지만 그것은 당신의 전화입니다. ...

    +0

    MVVM 및 MVVM 조명에 익숙하지 않아서 데이터 서비스의 속성에 대한 바인딩이 의도를 위반했다고 느꼈습니다 –

    +1

    ViewModel에서 모델로 바인딩하는 것이 좋습니다 ... 어떤 사람들은 모델을 ' 보기가 그것을 볼 수 있도록 ViewModel에 대한 공용 속성'. ViewModel의 모든 Model 필드가 Properties로 등록되어 View에 모델 자체에 대한 액세스 권한이 없습니다.이 두 가지 방법 모두 MVVM 패턴을 손상시키지 않습니다. – Blachshma

    +0

    대단히 고맙습니다. 내 혼란을 해결해 주셔서 감사합니다. –

    1

    이벤트가 좋은 사례 인 것처럼 들리지만, 둘 다 DataServiceA에 액세스 할 수 있다면 테마가 변경 될 때 이벤트를 발생시킬 수 있습니까?

    그래서 DataServiceA에서 "OnThemeChanged"이벤트는 테마가 수정되고 ViewModels이 이벤트에 가입하여 컨텐트가 올려 질 때 업데이트 할 수있을 때 발생합니다.

    관련 문제