2012-04-28 3 views
0

저는 WPF MVVM을 처음 사용합니다.초록 사용자 정의 컨트롤

UserControl에서 상속 한 MyButtonsView라는 사용자 정의 컨트롤이 있습니다. 이 사용자 정의 컨트롤에는 다른 두 개의 사용자 정의 컨트롤이 표시되어야합니다.

나는 뷰 모델 클래스가 거의 없습니다. MyRedButtonViewModel, MyBlueButtonViewModel. 둘 다 MyAbsButtonViewModel이라는 추상 클래스에서 파생됩니다. 이 추상적 뷰 모델은 모든 파생 뷰 모델이 GetImage라는 프로퍼티 이름을 구현하도록 강제합니다.

MyButtonsView의 XAML에서 두 행이 있어야하는 표가 있습니다. 첫 번째 행에서 MyRedButtonViewModel을 갖고 싶습니다. 두 번째 행에 MyBlueButtonViewModel을 갖고 싶습니다. 둘 다 GetImage 속성에 바인드 된 버튼 안에 이미지를 표시해야합니다. (그것은 다형성이다).

각 행에 적합한보기 모델을로드하도록 XAML에 지시 할 수 있습니까?

적절한 방법으로 구현할 수 있습니다. 나는 내 디자인을 바꾸기 위해 마음을 열었다.

+0

을 질문 게다가 : 당신의 이름에 대해 다시 생각해 보라고. MyAbsButtonViewModel은 Abs가 일반적으로 수학적 절대 값으로 사용되기 때문에 매우 혼란 스럽습니다. 이 추가 문자가 당신을 해치지 않지만 코드 품질을 향상시키는 한 더 나은 이름은 MyAbstractButtonViewModel입니다. 또 다른 제안은 다른 클래스가 파생 할 수있는 기본 클래스임을 나타내는 ButtonViewModelBase입니다. – PVitt

답변

1

두 개의 단추에 대해 다른 ViewModel을 DataContext로 정의 할 수 있습니다.

MyButtonsViewModel에 바인딩하는 MyButtonsView는 MyBlueButtonViewModel과 MyRedButtonViewModel의 두 가지 속성을 가지고 있습니다. MyButtonsView에서

이 같은 일도을 정의 할 수 있습니다

<MyRedButton DataContext = "MyRedButtonViewModel" ..../> 
<MyBlueButton DataContext = "MyBlueButtonViewModel" .../> 
+0

덕분에 도움이되었습니다. –