Команда Silverlight Привязка кнопки динамически?MVVM - PullRequest
0 голосов
/ 28 октября 2010

Не уверен, что я проектирую это правильно (руководство приветствуется!), Но у меня есть окно поиска, которое вызывается из многих мест.Экран поиска имеет собственную ViewModel.Когда пользователь выбирает что-то на экране поиска (после поиска :), мне нужно отправить выбор на любой вид, который запрашивал поиск (экран поиска - это всплывающее окно).

У меня есть видоискатель, который появляется на экране, когда я отправляю ему сообщение.Сообщение отправляется из ViewModel (MVVM Light) в локатор просмотра.

Зарегистрировать обратный звонок?Трансляция сообщения?Установить недвижимость?Динамически привязать кнопку «Выбрать» на экране поиска к модели представления, которая инициировала вызов?

мммм, столько вопросов, так мало времени ...

С уважением, Ричард

Ответы [ 3 ]

1 голос
/ 28 октября 2010

Я не уверен, что в MVVM Light есть что-то, эквивалентное EventAggregator , но я думаю, что это лучший способ для вас транслировать это событие.

Другой вариант - использовать Reactive Extensions (Rx) и заставить получателя подписаться на событие, используя фильтр, прежде чем открывать представление поиска, затем передать фильтр в представление поиска, чтобы фактическая операция вызывается с использованием этого фильтра, поэтому даже когда запрашиваемая модель представления поиска выполняет поиск, это другая модель представления, которая получит событие.

1 голос
/ 28 октября 2010

У меня была похожая проблема, и вот как я это сделал.

У меня была разница ViewModel для моего всплывающего окна, и модель представления взяла параметр объекта, который вы хотите вернуть, например, у вас есть MainViewModel и свойство Customer.В конструкторе PopupViewModel я передал Customer из MainViewModel.Когда я выполнил поиск и нашел нужного вам клиента, назначьте этого клиента по ссылке Customer из MainViewModel.Предполагая, что вы реализовали интерфейс INotifyPropertyChange, он будет отображаться на главном экране, как только вы выберете клиента.Дайте мне знать, если вы понимаете, или я опубликую вам пример.

Надеюсь, это поможет.

0 голосов
/ 28 октября 2010

Я рекомендую передать ссылку на элемент интерфейса, делающий переадресацию на ваш поиск.Насколько я могу судить, все это происходит на уровне модели представления.

Другой вариант - установить флаг в результате поиска или объекте поиска, который регистрирует, какой интерфейс совершил вызов.Я не уверен, как бы вы поступили в этом случае с обратным вызовом.

...