2011-01-18 2 views
2

안녕하세요, 저는 UserControls에서 개별 기능 단위를 사용하여 응용 프로그램을 확장 한 다음 내 메인 페이지의 ContentControls 그리드 안에 여러 가지를 넣고 싶습니다. 그리드의 컨트롤간에 통신 할 수 있어야합니다.그리드 (MVVM 응용 프로그램)에서 여러 개의 WPF Usercontrols 사이의 통신

내가 데이터를 교환하는 가장 좋은 방법은 무엇인가 궁금합니다. 이 응용 프로그램은 MVVM 디자인이며 각 UserControl에는 자체 ViewModel이 있습니다. 각 주 양식의 ContentControls 'Content'속성은 해당 ContentControl에 표시 할 Usercontrol을 제공하는 기본 폼의 viewmodel에있는 속성에 바인딩됩니다.

예를 들어 내가 향상된 파일 브라우저를 원한다고 가정 해 봅시다.이를 UserControl에 빌드하십시오. 그런 다음 다른 UserControl에 파일 뷰어가 있습니다. 나는 그것들을 메인 폼의 그리드에서 동시에 보여줄 수 있기를 바란다. 브라우저에서 파일을 선택할 때 선택한 파일을 Viewer Usercontrol에서 사용할 수있게하려고합니다.

이 디자인을 사용하여 응용 프로그램에서 필요할 때마다 각 기능 청크를 재사용 할 수있었습니다. 나는 그들 사이에 데이터를 전송하는 가장 좋은 방법에 대해 명확하지 않다. 디자인에서 서로를 알지 못하기 때문이다. 어떤 충고? 감사!

답변

2

메시지 버스를 사용하십시오. 예를 들어 MVVM Light Tookit을 사용하는 경우 in-built IMessenger implementation을 사용합니다. 그렇지 않은 경우 자신의 롤업을하는 것이 합리적입니다.

일단 메시지 버스가 있으면 하나의 ViewModel에 메시지를 등록하고 다른 하나의 ViewModel에서 메시지를 게시 할 수 있습니다. ViewModel을 통해 (일대일 방식으로 또는 '브로드 캐스트'방식으로) 쉽게 통신 할 수 있습니다.

+0

훌륭한 정보 Matt는 매우 감사합니다. – TripleAntigen