команды silverlight через призму, получение аргументов для события? - PullRequest
0 голосов
/ 26 июня 2009

У меня есть форма данных в SL3, которая использует команды призмы с прикрепленным поведением для захвата событий.

(Это довольно точно следует за этим сообщением в блоге: http://blogs.southworks.net/dschenkelman/2009/04/18/commands-with-attached-behavior-for-silverlight-3-dataform/#comment-607)

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

В конструкторе виртуальной машины я определяю команду делегата:

this.EditEnded = new DelegateCommand<object>(o => {
    //how can I tell if the button clicked was cancel or save?
}

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

Ответы [ 2 ]

2 голосов
/ 26 июня 2009

Чтобы получить параметр обратно, вы можете отредактировать ваш производный класс CommandBehaviorBase следующим образом:

private void ItemEditEnded(object sender, DataFormItemEditEndedEventArgs e)
{
     this.CommandParameter = e.EditAction;
     ExecuteCommand();
}

Это отправит действие EditAction (или что-то еще, что вы хотите) в CommandDelegate. В этом случае вы бы не добавили прикрепленное свойство для параметра. Правильно измените класс присоединенного свойства (не указывайте CommandParameter). Я не влюблен в этот подход (кажется, немного нестандартным), и мне интересно, есть ли у кого-то еще альтернативное предложение.

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

Мое видео о командах Prism . имеет дело с большим количеством статических параметров. Смотрите раздел «Параметры команды», чтобы узнать, как сортировать методы на основе статического присоединенного свойства.

<Button Content="Save"
        HorizontalAlignment="Center"
        VerticalAlignment="Bottom"
        cal:Click.Command="{Binding GetCompanyData}"
        cal:Click.CommandParameter="SaveButton"
        />
0 голосов
/ 27 июня 2009

Может быть, вам следует объявить отдельные команды (SaveCommand и CancelCommand) для отдельных кнопок и действий.

...