2017-10-25 6 views
0

ビューモデルの2つの異なるボタンに2つの異なるコマンドを使用する方法。viewmodelで複数のコマンドを使用

私の要件は、自分のページに2つのボタンを使用することです。

私は1つのボタンに実装しましたが、複数のボタンに実装することはできません。

MVVMを使用してviewmodelで複数のコマンドを使用する例は誰にでも教えてください。

私はMVVMにとって非常に慣れ親しんでいます。私を助けてください。

+0

PRIを使用していますかSMライブラリやそれなしでそれを達成したいですか? – Sagar

+0

@Sagar PRISMライブラリを使用していません – Veeresh

+0

ビューモデルのコマンドは、通常、 'ICommand'型のプロパティです。任意のビューモデルクラスで好きなだけ多くのそのようなプロパティを持つことができます。あなたの質問は何ですか? – Clemens

答えて

1

1)RelayCommandクラスを作成します。

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)あなたのVMでのICommandのプロパティを作成します。

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)ビューにバインドコマンド:

<Button Content="Button 1" Command="{Binding Command1}"/> 
    <Button Content="Button 2" Command="{Binding Command2}"/> 

が、それは助けのご希望を;)

+0

あまりにもありがとう、それは助け:) – Veeresh

関連する問題