Как получить доступ к командам на usercontrol из viewmodel - PullRequest
1 голос
/ 29 октября 2009

У меня есть устаревшие пользовательские элементы управления окнами, которые предоставляют несколько открытых методов. Я поместил этот элемент управления в пользовательский элемент управления wpf и инкапсулировал методы с помощью команды relay в новом пользовательском контроле wpf.

Теперь моя проблема заключается в том, как использовать шаблон mvvm для выполнения команд в моем пользовательском элементе управления из модели представления, которая используется с представлением, в котором размещен новый пользовательский контроль wpf.

Ответы [ 3 ]

0 голосов
/ 29 октября 2009

Мне интересно, как заставить это работать с привязками. Необходимо установить режим OneWayToSource, чтобы получить команду от пользовательского элемента управления. Сложность в том, что инициализация команды должна выполняться внутри загруженного события usercontrol. Если вы попытаетесь сделать это внутри конструктора, вы получите в результате инициализацию по умолчанию из привязки, которая может быть нулевой.

0 голосов
/ 04 июня 2015

Использовать PRISM EventAggregator? Вы можете отменить событие из ViewModel, из вашего Usercontrol подписаться на него.

http://www.codeproject.com/Articles/355473/Prism-EventAggregator-Sample https://msdn.microsoft.com/en-us/library/ff921122.aspx

0 голосов
/ 29 октября 2009

В viewmodel вы должны добавить поле скажем

Public ICommand CommandOne

Теперь эта команда создаст новый объект RelayCommand в зависимости от ваших требований / условий.

Теперь вы можете связать эту команду 'CommandOne' с любым объектом, скажем, кнопкой в ​​форме управления.

Таким образом, при каждом нажатии кнопки будет создан объект RelayCommand, и он выполнит действие, данное ему в качестве параметра.

Надеюсь, у вас это получится.

...