Связь между несколькими пользовательскими элементами управления WPF в сетке (приложение MVVM) - PullRequest
2 голосов
/ 18 января 2011

Здравствуйте, я хотел бы расширить свое приложение, имея отдельные функциональные единицы в UserControls, а затем поместить несколько из них в сетку ContentControls на моей главной странице.Мне нужно будет иметь возможность общаться между элементами управления в сетке.

Мне интересно, каков наилучший способ обмена данными между ними.Приложение представляет собой MVVM-дизайн, в котором каждый Usercontrol имеет свою собственную ViewModel.Каждое из свойств ContentControls основной формы привязано к свойству в viewmodel главной формы, которое предоставляет Usercontrol для отображения в этом ContentControl.

Например, допустим, я хочу расширенный файловый браузерЯ встроил это в UserControl.Тогда у меня есть средство просмотра файлов в другом UserControl.Я хотел бы иметь возможность показывать их обоих одновременно в виде сетки в основной форме.Когда я выбираю файл в браузере, я хочу, чтобы выбранный файл был доступен для элемента управления User Viewer.

Я использовал этот дизайн, чтобы я мог повторно использовать каждый кусок функциональности, где бы он мне ни понадобился в приложении.Я не понимаю, как лучше всего передавать данные между ними, так как в моем дизайне они не знают друг друга.Любой совет?Спасибо!

1 Ответ

2 голосов
/ 18 января 2011

Используйте шину сообщений.Если вы используете, например, MVVM Light Tookit , используйте встроенную реализацию IMessenger .Если нет, то достаточно просто свернуть свою собственную.

Как только у вас есть шина сообщений, вы можете регистрировать сообщения в одной ViewModel и публиковать сообщения из другой.Это простой способ общения (один на один или в режиме «широковещания») через ViewModels.

...