There are several ways to do this, look here :
- Using WPF tools. Simplest
Add namespaces:
- System.Windows.Interactivitiy
- Microsoft.Expression.Interactions
XAML:
<Window> xmlns:wi="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"> <wi:Interaction.Triggers> <wi:EventTrigger EventName="SelectionChanged"> <ei:CallMethodAction TargetObject="{Binding}" MethodName="ShowCustomer"/> </wi:EventTrigger> </wi:Interaction.Triggers> </Window>
the code:
public void ShowCustomer() {
- Using MVVMLight. The most difficult but effective practice.
Install the GalaSoft NuGet package.

Get namespaces:
- System.Windows.Interactivity
- GalaSoft.MvvmLight.Platform
Xaml
<Window> xmlns:wi="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:cmd="http://www.galasoft.ch/mvvmlight"> <wi:Interaction.Triggers> <wi:EventTrigger EventName="Navigated"> <cmd:EventToCommand Command="{Binding NavigatedEvent}" PassEventArgsToCommand="True" /> </wi:EventTrigger> </wi:Interaction.Triggers> </Window>
Code with delegates: Source
To do this, you must get the Prism MVVM NuGet package.

using Microsoft.Practices.Prism.Commands; // With params. public DelegateCommand<string> CommandOne { get; set; } // Without params. public DelegateCommand CommandTwo { get; set; } public MainWindow() { InitializeComponent(); // Must initialize the DelegateCommands here. CommandOne = new DelegateCommand<string>(executeCommandOne); CommandTwo = new DelegateCommand(executeCommandTwo); } private void executeCommandOne(string param) { // Do something here. } private void executeCommandTwo() { // Do something here. }
Code without DelegateCommand: Source
using GalaSoft.MvvmLight.CommandWpf public MainWindow() { InitializeComponent(); CommandOne = new RelayCommand<string>(executeCommandOne); CommandTwo = new RelayCommand(executeCommandTwo); } public RelayCommand<string> CommandOne { get; set; } public RelayCommand CommandTwo { get; set; } private void executeCommandOne(string param) {
- Using Telerik EventToCommandBehavior . You will need to download its NuGet package . This is an option.
XAML:
<i:Interaction.Behaviors> <telerek:EventToCommandBehavior Command="{Binding DropCommand}" Event="Drop" PassArguments="True" /> </i:Interaction.Behaviors>
the code:
public ActionCommand<DragEventArgs> DropCommand { get; private set; } this.DropCommand = new ActionCommand<DragEventArgs>(OnDrop); private void OnDrop(DragEventArgs e) {
AzzamAziz Feb 12 '15 at 4:19 2015-02-12 04:19
source share