Обновление пользовательского интерфейса MVVM после закрытия выполненной команды - PullRequest
2 голосов
/ 22 ноября 2010

Эй, подобный вопрос уже задавался ранее, но ни один из них точно не отвечает на мой.

У меня есть приложение MVVM, которое включает кнопку «Опции» - нажмите эту кнопку, и откроется диалоговое окно опций - это делается с помощью команды.

Как только пользователь сохранит свои параметры, я хочу сказать основной оболочке перезагрузить ее параметры. Каков наилучший способ сделать это?

Моя кнопка выглядит так:

<Button Width="50" Command="{Binding SettingsCommand}" CommandParameter="" ...>
    <Image Source="Images/Settings.png" Width="16" Height="16" />
</Button>

Спасибо, Дэйв.

Ответы [ 3 ]

1 голос
/ 22 ноября 2010

основная оболочка для перезагрузки ее параметров

Это обычно достигается с помощью DataBinding.Когда вы закрываете это диалоговое окно, просто обновите значения в ViewModel, и он должен легко привязаться к View.Похоже, что ваше понимание MVVM немного неверно.

1 голос
/ 22 ноября 2010

Стандартный способ - реализовать INotifyPropertyChanged в вашей модели представления и заставить вашу команду запустить событие PropertyChanged после изменения свойств (что в этом случае будет после закрытия диалогового окна). ). Когда вы запускаете PropertyChanged, ваши привязки будут читать новые значения свойств.

0 голосов
/ 22 ноября 2010

Я предлагаю использовать OptionsService, который ViewModel использует в диалоге.Сохраните изменения в сервисе, и если какой-либо зависимой виртуальной машине потребуется изменить состояние отображения на основе изменения параметров, то они регистрируются (через событие) в сервисе, в котором параметры были изменены.Служба также может иметь способ получения данных опций.

Если вы используете Dependency Injection, это должно быть прямым, поскольку вы можете внедрить IOptionsService во все ViewModels.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...