2012-03-28 2 views
1

MVVM 패턴 인 Silverlight 및 XAML을 이해하려고합니다.Silverlight의 MVVM 데이터 지속성

나는 프레임에 뷰를로드하는 메인 페이지가있는 단계에 있습니다. 각보기는 xaml의 viewmodel에 바인딩 한 다음 viewmodels 데이터에 바인딩 할 수 있습니다. 또한 버튼 클릭과 그리드 이벤트 등 (예 : SelectionChanged)에 대한 명령을 실행하고 있습니다.

사용자가 기본 페이지 탐색 메뉴를 사용하여 탐색하면 새보기가 프레임에로드되어 자체보기 모델의 인스턴스를 만듭니다.

내 질문에 대한 하나의보기에 대한 내 viewmodel은 일부 데이터에 대한 WCF 메서드를 호출하고 viewmodel에 보관 된 ObservableCollection에 대한 바인딩을 통해 그리드에 표시합니다. 변경이 이루어지면 단순히 저장 WCF 메소드를 호출하고이 ObservableCollection을 전달합니다. 그러나 사용자가 눈금 선을 두 번 클릭하면 일부 정보를 저장하고 두 번 클릭하여 다른보기로 변경되므로 다음보기로 유지해야합니다. "선택한 항목 ID"와 같은 정보.

필자가 결론을 내린 것은 뷰 모델과 분리되어 있으며 응용 프로그램 상태 및 사용자 선택 등을 유지하는 클래스의 "모델"집합입니다. Viewmodels는 여기에서 "선택한 항목 ID"와 같은 항목을 저장할 수 있습니다. 내 마음 속에 .. "모델"은 WCF 통화의 반대편에있는 모든 것이 었습니다. 나는 다른 모델 "레이어"를 여기에 만들어야한다고 생각하지 않았다?

나는이 접근법에있어 잘못된 점을 알고 있지만 잘못 생각합니다.

누구든지이 작업을 수행해야하는 방법에 대해 설명해 줄 수 있습니까? 아니면이 방법이 괜찮습니까? 나는 그 패턴을 오해 했습니까?

도움 주셔서 감사합니다.

답변

0

워크 플로우가있는 경우 - 하나의 뷰 모델에 '선택'을 설정하고 나중에이 값을 사용할 뷰 모델을 알고있는 경우에는 필요에 따라 EventAggregator 방식을 사용하여 다른 뷰 모델에 이벤트를 게시 할 수 있습니다 이 값을 어딘가에 별도로 저장합니다.

+0

정보에 대해 알아야 할 뷰 모델이 아직 인스턴스화되지 않았습니다? 이것은 프레임의 뷰가 뷰 xaml을 통해 변경되는 경우에만 발생합니다. – creatiive

1

나는 당신이 그것을 생각하고 있다고 생각합니다. 나는 이것이 괜찮은 접근이라고 생각한다. 나는 당신이 원한다면 "UI 모델"을 합리적으로 허용한다고 생각한다. 모든 응용 프로그램에는 일반적으로 도우미 클래스가 있습니다. "관심의 분리"접근 방식을 취하는 한 앱을 유지 관리 할 수 ​​있습니다. 내 실버 라이트 앱에는 필요에 따라 애플리케이션 상태를 추적하는 "모델"영역이 있습니다. 이 모델 영역에는 UI와 관련된 클래스도 있습니다. - 내 두 센트.