Veeresh
Veeresh

Reputation: 1

Using Multiple commands in viewmodel

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

Answers (1)

Sinev Viktor
Sinev Viktor

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

Related Questions