2014-03-25 4 views
1

나는 ListViewPopup이있는 내용 (Buttons, TextBoxes 등) 변경 동적으로 ListView에서 선택한 것을 따라. 이 무엇입니까? Popup 또는 ViewModel이 무엇을 결정하면 합법적입니까? 또한 이 ViewModel 님의 이벤트를 처리 할 수 ​​있는지 물어보고 싶습니다.MVVM 뷰 모델 -보기 통신

답변

1

보기에서 유효한 내용에 대한 자세한 설명은 5: Implementing the MVVM Pattern을 확인하십시오. 그것은이 답변에서 제가 여기있는 것보다 훨씬 낫다고 설명합니다.

Q :

그래도 난 당신의 질문에 기회를 줄 것이다 합법적인가보기가 팝업에 있거나 뷰 모델이 그것을 무엇을해야하는지 판단하는 경우? A :보기에서 팝업이 표시되는 방법을 결정해야하며, ViewModel이 표시되는 내용을 결정해야합니다.

Q : View에서 ViewModel의 이벤트를 처리 할 수 ​​있습니까? A : 물론, 이것은 DataBinding의 핵심 부분입니다. INotifyPropertyChanged 이벤트를 처리합니다.

1

MVVM은 법률이 아닙니다. 이것은 도구입니다. 당신이하는 일이 당신의 목적에 부합한다면 그것은 당신을 위해 일합니다. 가장 좋은 방법이 무엇인지 묻는다면, MVVM을 처음 사용하는 이유에 따라 다릅니다.

  • 보기와 독립적으로 테스트를 작성하고 싶은가요? 그런 다음 논리적 상태를 뷰 모델에 입력하십시오.

  • Blend에서 디자인 타임 데이터를 표시 할 수 있기를 원하기 때문입니까? 그런 다음 논리적 상태를 뷰 모델에 넣고 디자인 타임 데이터를 정의하여 디자인 모드로 표시합니다.

  • MVVM에 익숙한 사람들이 오랫동안 유지 관리 할 유지 보수 가능한 코드를 갖고 싶어하기 때문입니까? 논리를 뷰 모델에 넣으십시오.

  • 앱이 복잡하고 관심사가 분리되어 다른 사람들이보기에서 작업하고 다른 사람들이보기 모델에서 작업 할 수 있기 때문입니까? 논리를 뷰 모델에 넣으십시오. 이 중 어느 것도 적용되지 않으면

- 당신은 괜찮을 그냥 뒤에 코드에 코드를 넣어 그것을 알아낼와 MVVM은 드래그 할 못하게하려고 시간을 줄일 수 있습니다.

문제는 뷰 모델로 Popup의 내용을 운전하는 방법을 경우 - 당신이 일반적으로 할 수있는 것을 구현 ItemsControlsGridView, ListView로 아니면 사용자 정의 하나 ItemTemplateSelectors 또는 ContentTemplateSelectorsContentControls의 조합을 사용하여 뷰 모델 상태에 기초하여 디스플레이 될 뷰를 결정하는 로직.

또한 Minimalistic MVVM 성명서를 확인하십시오.

+1

"당신이하는 일이 당신의 목적에 부합한다면 - 그것은 당신을 위해 일합니다." 나는 100 % 동의한다. 또한, 당신을 인도 할 수있는 좋은 틀을 선택하는 것은 내가 패턴을 최대한 활용하는 데 도움이되는 것입니다. –