2013-09-10 6 views
0

Мы можем использовать ICommand вместо Routed Event для реализации MVVM, , чтобы мы могли написать логику в ViewModel.Как добавить RoutedEventArgs в качестве командного параметра

Вот пример:

<Button Width="40" Command="{Binding CommandOne}">Click1 
</Button> 

Но нам нужно установить CommandParameter всего Ourself, и моя проблема заключается в том, чтобы отправить RoutedEventArgs как CommandParameter.

private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
{ 
     throw new NotImplementedException(); 
} 

Как я могу использовать RoutedEventArgs в качестве параметра CommandParameter в моей модели ViewModel? Любые идеи?

+0

почему бы вам нужно RoutedEventArgs в VM? какие данные вы хотите отправить с помощью своей команды? – Nitin

+0

В WebBrowser, при навигации мне нужен навигационный url, который находится в NavigatingCancelEventArgs. – coldjokelife

+0

Возможно, вы просто передаете навигационный URL в качестве параметра CommandParameter, например: 'CommandParameter = {{Binding Source, ElementName = myWebBrowser}" ' –

ответ

1

Я не думаю, что есть какой-либо прямой способ сделать это (ничего не знаю). Но это может быть достигнуто с помощью интерактивности EventTrigger и определения ваших собственных TriggerAction, чтобы захватить EventArgs и отправить CommandParameter.

Вот один из примеров этого. Здесь пример имеет другое событие, но может быть применен к любому.

http://social.msdn.microsoft.com/Forums/silverlight/en-US/5cd586e7-640f-447b-9040-e9270173abf7/passing-drop-event-data-in-a-command-parameter-using-mvvm-and-the-interactivity-framework

+0

Спасибо, я использовал приложенное поведение для этого. При прикреплении команды к событию Routed укажите параметр RoutedEventArgs как метод выполнения этой команды. Возможно, в следующий раз я попробую, как вы мне расскажете. – coldjokelife

+0

Я тестировал метод, который вы мне сказали, он работает. Большое спасибо. – coldjokelife

+0

, возможно, вы захотите опубликовать ответ в этом случае ... реализация прилагаемого поведения ... спасибо :) – Nitin