UserControl 간 통신에 대해 질문드립니다.

안녕하세요. WPF 프로젝트에 MVVM 패턴을 적용해서 개발중입니다.

전 하나의 window 화면에 기능별로 영역을 나눴고 각 영역은 UserControl을 만들어 처리했습니다. (Android의 Fragment 처럼 사용하고 있습니다.)
그리고 기능적으로 나누다보니 대부분의 UserControl 이 각자의 ViewModel을
가지고 있습니다.

그런데 문제는 각 UserContol이 독립적인 기능을 가지면서 서로 통신을 해야하는 경우도 생긴단 겁니다.
A UserControl에 검색창이 있고, 여기에 입력한 값이 B UserControl에 전달 되어야 하는 상황처럼요.

이런경우 통신을 위한 공유 ViewModel을 만들거나,
여러 ViewModel를 멤버로 가지는 Super Viewmodel을 사용하는 방법이 떠오릅니다만 그 외의 방법들을 포함해서 적절한게 무엇일까요?

작업을 하다보면 기능은 완성했지만 이게 옳은 구조인가에 대한 의문이 계속해서 듭니다.
코드 비하인드를 최대한 깨끗하게 유지해야한다는 글을 보고 최대한 그렇게 할려고 해도 여기에서 처리하는것 말고는 다른 방법이 떠오르지 않아 조금씩 코드량이 늘어나는 문제도 있고요…

1 Like

MVVMToolkit 사용하시면 Messenger 사용하시면 돼요

2 Likes

Mvvm 툴킷이면 윗분 말씀 처럼 메신저가 맞고
프리즘 mvvm이면 공식문서에 구독이라고 써있어요

자체 mvvm 구현하셨다면 이벤트 리스너를 만들고
데이터 노티파이가 일어나면 리스너에 데이터 전달 하는 방식이 있겠네요

이벤트 리스너로 변경 구독하는 방법도 있고 싱글톤으로 SearchContext같은거 만들어도 될거같습니다.

저도 뭐가 안티패턴인지 잘 몰라서 알려주시면 감사하겠습니다.