MVVMへのパスを続けて、私はボタンコマンドに来た。かなりの試行錯誤の末、私はついにICommand
を使ってButton_Click
コマンドの実際の例を得ました。どのボタンをクリックしたのかを確認する方法は? (MVVM)
私の問題は、ジェネリックイベントが作成されたため、ロジックを適用するためにどのボタンがクリックされたのかわかりません。私の例では、Sender
の情報を入手できる場所は何も使用していません。通常RoutedEventArgs
を使用して、以下のようなもの:
Button button = (Button)sender;
は、これは私がこれまで持っているものです。
ICommand
クラス:
public class CommandHandler : ICommand
{
private Action _action;
private bool _canExecute;
public CommandHandler(Action action, bool canExecute)
{
_action = action;
_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return _canExecute;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_action();
}
}
とアクションにするコード:
private ICommand _clickCommand;
public ICommand ClickCommand => _clickCommand ?? (_clickCommand = new CommandHandler(MyAction, _canExecute));
public ViewModelBase()
{
_canExecute = true;
}
public void MyAction()
{
//Apply logic here to differentiate each button
}
とXAMLを、
<Button Command="{Binding ClickCommand}" Style="{StaticResource RedButtonStyle}">MyButton</Button>
は、どのように私はボタンがあるかを識別するに行きますか他のボタンと同じコマンドをバインドするときにクリックされますか?
ちょっと興味がありますが、なぜ* 2 * ICommandsを使用しないのですか? –
@ XanderLuciano、私はちょうどいくつかの基準を適用すると思った方法でボタンをdiffirenitateそれを行う方法でした。乾杯! – KyloRen
フェア十分!私はちょうど約1ヶ月前にもMVVMを使い始めたので、あなたの思考を調整しなければならないという苦労を理解しています。がんばろう! –