Общение между несколькими WPF USERCONTROLS в сетке (приложение MVVM)
-
12-10-2019 - |
Вопрос
Привет, я хотел бы увеличить свое приложение, имея дискретные единицы функциональности в UserControls, а затем поместили несколько из них в сетку ContentControls на моей главной странице. Мне нужно быть в состоянии общаться между элементами управления в сетке.
Мне интересно, какой для них лучше всего обмениваться данными. Приложение является дизайном MVVM, причем каждый USERCONTROL имеет свою собственную ViewModel. Каждая из свойств ContentControls ContentControls в каждой основной форме связано с свойством в ViewModel основной формы, которая обеспечивает отображение USERCONTROL в этом ContentControl.
Например, допустим, я хочу улучшенный браузер файлов, поэтому я превращаю его в UserControl. Тогда у меня есть просмотр файлов в другом Usercontrol. Я хотел бы иметь возможность показать их обоим одновременно в сетке в основной форме. Когда я выбираю файл с браузером, я хочу, чтобы выбранный файл был доступен для зрителя usercontrol.
Я использовал этот дизайн, чтобы я мог повторно использовать каждую часть функциональности, где бы мне было нужно в приложении. Мне не ясно, как лучше всего передавать данные между ними, так как в моем дизайне они не знают друг о друге. Любой совет? Спасибо!
Решение
Используйте автобус сообщения. Если вы используете MVVM Light взял, например, используйте Встроенная внедрение Imessenger. Анкет Если нет, то это достаточно легко свернуть.
После того, как у вас есть автобус сообщений, вы можете зарегистрироваться для сообщений в одном ViewModel и опубликовать сообщения с другой. Это простой способ общаться (от одного к одному или «трансляции») в виде ViewModels.