WPF ボタンを ViewModelBase 内のコマンドに接続する
WPF ボタンをコマンドに効率的にリンクすると、ユーザー インターフェイスと基盤となるアプリケーション ロジック間の対話が効率化されます。 ただし、ビュー モデルに ViewModelBase
のような基本クラスを使用すると、このバインディング プロセスに課題が生じる可能性があります。
この記事では、カスタム コマンド ハンドラーを使用してこのハードルを克服するソリューションを紹介します。 以下は適切な CommandHandler
の定義です:
<code class="language-csharp">public class CommandHandler : ICommand { private Action _action; private Func<bool> _canExecute; public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } public CommandHandler(Action action, Func<bool> canExecute) { _action = action; _canExecute = canExecute; } public bool CanExecute(object parameter) => _canExecute?.Invoke() ?? true; public void Execute(object parameter) => _action?.Invoke(); }</code>
次に、この CommandHandler
を ViewModelBase
クラスに統合します。
<code class="language-csharp">public class ViewModelBase : INotifyPropertyChanged // Assuming INotifyPropertyChanged implementation { private ICommand _clickCommand; public ICommand ClickCommand { get { return _clickCommand ?? (_clickCommand = new CommandHandler(MyAction, CanExecute)); } } private void MyAction() { /* Your command logic here */ } private bool CanExecute() { /* Your canExecute logic here */ } // ... other properties and methods ... }</code>
最後に、XAML で、ボタンの Command
プロパティを、ClickCommand
によって公開される ViewModelBase
にバインドします。
<code class="language-xaml"><Button Command="{Binding ClickCommand}" Content="Click Me"/></code>
このアプローチは、ボタンを ViewModelBase
内のコマンドに効果的にバインドし、UI とビュー モデル ロジック間の懸念事項の明確な分離を促進し、より保守しやすく堅牢な WPF アプリケーションを実現します。
以上がWPF ボタンを ViewModelBase のコマンドにバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。