Как мне обрабатывать несколько событий на элемент управления с шаблоном команды, используя MVVM в Silverlight? - PullRequest
0 голосов
/ 20 февраля 2009

Кто-нибудь использует шаблон команды SLExtensions (http://www.codeplex.com/SLExtensions) для привязки команд к событиям элемента управления Silverlight? Из того, что я видел, вы можете прикрепить команду только для одного события на элемент управления. Например, вы можете только добавить событие нажатия кнопки, событие нажатия клавиши для текстового поля и т. д.

Что если я хочу добавить несколько событий на элемент управления? Например, что если я хочу добавить команды для событий Click и Drop для кнопки. Похоже, из коробки нет способа справиться с этим с помощью кода SLExtensions.

Кстати, это в контексте Model-View-ViewModel (MVVM).

Ответы [ 3 ]

0 голосов
/ 22 февраля 2009

Двин - Ты абсолютно прав. Я мог бы обработать событие удаления, используя указанный вами код. Тем не менее, мне все равно придется реализовать обработчик событий в моем коде, а затем вызывать мою ViewModel оттуда. Я пытаюсь придерживаться MVVM, пытаясь устранить обработчики событий кодирования в моем коде позади. Вместо этого я хотел бы подключить свой XAML к моей ViewModel напрямую с помощью прилагаемых команд.

Библиотека SLExtensions позволяет вам делать это, но (из того, что я испытал), допускает только одно событие для каждого элемента управления (Нажмите кнопку, клавиша для текстового поля и т. Д.). Для любого нетривиального приложения этого недостаточно, и ваша реализация MVVM выходит из строя.

Извините, что не используете область комментариев, но 300 символов немного ограничивают. Люди из StackOverflow - вам нужно увеличить этот лимит.

0 голосов
/ 20 марта 2009

Я не знаком с SLExtensions, но в WPF у вас одинаковый лимит в одну команду на элемент управления, связанный с реализацией элемента управления. Если вы хотите, чтобы команда выполнялась для другого события, вы должны связать ее самостоятельно. Тем не менее, есть решение, которое не требует, чтобы вы делали эту проводку в коде позади ... прикрепленного поведения. На самом деле Caliburn (http://www.codeplex.com/caliburn) делает именно это со своими концепциями "Action". Я давно не смотрел на Caliburn и понятия не имею, совместим ли он с Silverlight, но вы, конечно, можете посмотреть, Действия там кодифицированы и реализуют свои.

0 голосов
/ 21 февраля 2009

Какие события вы подключаете в XAML, немного ограничены, но ничто не мешает вам делать это в модели кода / представления, если она не поддерживается SLExtensions естественным образом.

if (action == dropped)
{
  Commands.Dropped.Execute();
else
{
  Commands.Clicked.Execute();
}

Или как угодно ... если я вас неправильно понял, вам может пригодиться пример кода того, что вы хотите сделать.

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