Reputation: 1
How to use 2 different commands for 2 different buttons in a viewmodel.
MY requirement is to use 2 buttons in my page.
I have implemented for 1 button , but not able to implement for multiple buttons .
Can anyone provide me a example of using multiple commands in viewmodel using MVVM.
I am very new to MVVM , so please help me out.
Upvotes: 0
Views: 1196
Reputation: 489
1) Create RelayCommand class:
public class RelayCommand : ICommand
{
private readonly Predicate<object> _canExecute;
private readonly Action<object> _execute;
public RelayCommand(Predicate<object> canExecute, Action<object> execute)
{
this._canExecute = canExecute;
this._execute = execute;
}
public event EventHandler CanExecuteChanged
{
add => CommandManager.RequerySuggested += value;
remove => CommandManager.RequerySuggested -= value;
}
public bool CanExecute(object parameter)
{
return _canExecute(parameter);
}
public void Execute(object parameter)
{
_execute(parameter);
}
}
2) Create ICommand properties in your VM:
public ICommand Command1 { get { return new RelayCommand(e => true, this.MethodForCommand1); } }
public ICommand Command2{ get { return new RelayCommand(e => true, this.MethodForCommand2); } }
private void MethodForCommand1(object obj){ //Type your code for Command1 }
private void MethodForCommand2(object obj){ //Type your code for Command2 }
3) Bind command in view:
<Button Content="Button 1" Command="{Binding Command1}"/>
<Button Content="Button 2" Command="{Binding Command2}"/>
Hope it's help ;)
Upvotes: 1