2012-05-06 2 views
1

여러 가지보기 (그리드, 텍스트 상자 등)와 응용 프로그램의 다른 위치에서 동일한 데이터를 나타내는 뷰가 거의 없습니다. 모든보기가 다른 View-Model에 바인드됩니다.다른보기에서 동일한 명령 실행 - MMVM

내가 선택한 행/s에 Add-New, Update, Delete 등의 명령이 있습니다. 명령은 주 도구 모음 (다른보기)의 활성보기, 해당보기의 단추, 오른쪽 클릭 메뉴 및 다른 위치에서 실행할 수 있습니다. 명령이 나타날 수있는 모든 시나리오에 대해 명령을 다시 쓰고 싶지 않습니다. 명령의 코드를 복제하지 않고 모든 시나리오에 대해 막대한 전환 작업을 수행하지 않고 다른 작업을 수행 할 수 있습니까?

감사합니다.

답변

1

하나의 주 위치 (예 : 창) 에서 명령을 보유하는 CommandBindings를 사용하고 범위 아래에서 각보기 또는 컨트롤에서이 명령을 호출 할 수 있습니다. 또는 각 특정 viewModel이 생성자에서 가져와 바인딩 할 "CommnadViewModel"을 만듭니다. Unity 또는 다른 컨테이너를 사용하면 훨씬 쉽게 만들 수 있습니다.

+0

Janushirsha, 문제는 내가 내 애플 리케이션에서 많은 명령을 가지고있다. 그리고 모든 것이 모든 곳에 나타나지는 않습니다. 따라서 명령에 대한 뷰 모델의 개념은 적합하지 않습니다. 또한 문제는 명령 자체가 선택된 행과 같은 뷰 모델의 데이터를 사용한다는 것입니다. – OrrM

+0

안녕하세요, 실제로 VM 간의 realtions은 일반적으로 mvvm patern의 민감한 지점입니다. 모든 commnads를 조합 할 필요는 없지만 각 개념적 기능을 캡슐화하고 응용 프로그램 메커니즘 (메신저와 비슷한 기능) 또는 VM 명령을 호출 할 때 기능에 필요한 정보를 주입 할 수 있습니다. – Janushirsha