2009-11-17 2 views
0

저는 WPF 및 MVVM을 배우고 있으며 좋은 디자인을 강조하고 있습니다. WinForms 및 C#에 대한 많은 경험이 있습니다. 이것은 개념적이므로 코드를 게시 할 필요가 없다고 생각합니다.WPF MVVM가 공유 정보를 제어합니다.

"프로필"을 관리하는 xaml 창이 있습니다. 왼쪽 절반에는 데이터베이스를 읽고 프로파일의 계층을 생성하는 ViewModel에 바인딩 된 사용자 정의 Control 트리 뷰가 있습니다. 개별 프로파일에 대한 ViewModel은 다른 것들 중에서 데이터베이스 ID를 포함합니다. 오른쪽 절반은 ListView 및 개별 Profile 정보에 대한 데이터베이스를 읽는 자체 ViewModel을 가진 또 다른 사용자 지정 컨트롤입니다.

두 반쪽 모두 독립적으로 작동하지만 이제는 listview의 정보가 treeview 선택을 반영하도록 listview와 함께 treeview 선택을 연결하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

트리보기 viewmodel은 목록보기에서 프로필 정보를 조회하는 데 사용할 수있는 프로필 ID를 제공합니다. 다시 말하지만, 목표는이 둘을 하나로 묶는 것입니다. 일부 옵션이있는 것 같습니다 :

- 트리보기의 viewmodel은 프로필을 업데이트하는 listview viewmodel에서 정적 메서드를 호출 할 수 있습니다.

- 전체 페이지에는 두 구성 요소 모두에 대한 멤버보기 모델이있는보기 모델이 포함될 수 있습니다.

-I 어떻게 든 treeviewss viewmodel의 알려진 선택된 프로필을 xaml 파일의 listview 컨트롤로 "라우팅"할 수 있습니다.

이러한 옵션은 모두 더러워졌습니다. 다시 나는 여기에서 배우고 있고, 작은 세부 사항이 나중에 더 큰 결정을 지시하기 때문에 좋은 디자인을 강조하고 싶다.

아이디어가 있습니까?

감사합니다.

답변

1

프리즘을 사용하고 있습니까? CAL WPF? 그렇다면 복합 이벤트 사용을 고려할 수도 있습니다. ViewModel에서 작동하는 이벤트이며 CompositeCommands도 있습니다.

당신은 너무 같은 복합 이벤트를 설정할 수 있습니다 ...

public class ProfileSelectedEvent : CompositePresentationEvent<Profile> 
{ 
} 

는 그런 복합 이벤트를 등록하고 게시 할 EventAggregator를 사용할 수 있습니다. 당신은 WPF에 대한 프리즘/CAL을 사용하는 경우 당신은 당신이 바로 그런 다음 게시하고 EventAggregator를 통해 이벤트에 가입 할 수의 ViewModel

TreeViewViewModel(IEventAggregator eventAggregator) 

의 생성자에서 IEventAggregator을 넣을 수 있도록 유니티에 연결해야합니다 ...

EventAggregator.GetEvent<ProfileSelectedEvent>().Publish(profile); 

구독은 매우 유사합니다 ... 나는 당신이 아이디어를 얻을 것이라고 확신합니다! 이 도움이

희망, 내가 프리즘/CAL을 사용하고 있지 않다

앤디

+0

는, 실제로는 처음 내가 들어 본 것입니다. 그것을 사용하는 습관을 만들어야하는 일반적인 추세가되고 있습니다. 다른 말로하면 기본 WPF 설치 구조와 MVVM 구조 만 배우려고 노력하는 중입니다. – bufferz

+0

그냥 좋은 프레임 워크를 제공합니다. MSDN 기사를 참고하십시오. http://msdn.microsoft.com/en-us/magazine/cc785479.aspx 하지만 정말로하고 싶은 것은 이것을 다운로드하고 Microsoft가 예제로 만든 StockTrader 앱을로드하는 것입니다 ... http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1 -D5B4-453B-B827-98E162E1BD8D & displaylang = ko 어떻게하면 물건을 함께 넣을 수 있고 어떻게 WPD와 MVVM을 사용하여 시작했는지를 알 수 있습니다. 희망이 도움이 ... –

+0

고마워, 앤디. 프리즘과 그것이 무엇인지 이해하는 데는 다소 시간이 걸렸습니다. 더 깊게 파고 들자면, 나는 사용하고 EventAggregator는 내가하고 싶은 것을 성취 할 것이다. 이것은 일반적인 지시 사항을 단지 한 줄 이상의 코드로 제공합니다. 귀하의 의견을 보내 주셔서 감사합니다! – bufferz

관련 문제