「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.03.24
XML
カテゴリ: C#.NET


以下は、C# WPF アプリケーションで ICommand インターフェースを実装する例です。この例では、RelayCommand と呼ばれる独自のクラスを使用して ICommand を実装します。RelayCommand は、デリゲートを使用してコマンドの実行と CanExecute のチェックを処理します。


```csharp

using System;

using System.Windows.Input;


namespace YourNamespace

{

    // ICommand の実装例として独自の RelayCommand クラスを作成します

    public class RelayCommand : ICommand

    {

        private readonly Action<object> _execute;

        private readonly Predicate<object> _canExecute;


        // コンストラクタ

        public RelayCommand(Action<object> execute, Predicate<object> canExecute = null)

        {

            _execute = execute ?? throw new ArgumentNullException(nameof(execute));

            _canExecute = canExecute;

        }


        // ICommand インターフェースのメソッド


        // コマンドの実行可否を決定するメソッド

        public bool CanExecute(object parameter)

        {

            return _canExecute == null || _canExecute(parameter);

        }


        // コマンドの実行処理を行うメソッド

        public void Execute(object parameter)

        {

            _execute(parameter);

        }


        // コマンドの実行可否が変更されたことを通知するイベント

        public event EventHandler CanExecuteChanged

        {

            add { CommandManager.RequerySuggested += value; }

            remove { CommandManager.RequerySuggested -= value; }

        }

    }


    // このクラスは、ViewModel の中で ICommand を公開するために使用されます

    public class YourViewModel

    {

        // ICommand インスタンスを保持します

        public ICommand YourCommand { get; }


        // コンストラクタ

        public YourViewModel()

        {

            // ICommand のインスタンスを作成します

            YourCommand = new RelayCommand(ExecuteYourCommand, CanExecuteYourCommand);

        }


        // ICommand の実行処理

        private void ExecuteYourCommand(object parameter)

        {

            // ここにコマンドの実行処理を記述します

        }


        // ICommand の実行可否を判定するメソッド

        private bool CanExecuteYourCommand(object parameter)

        {

            // ここにコマンドの実行可否の条件を記述します

            return true; // 例として、常に実行可能とします

        }

    }

}

```


上記の例では、RelayCommand クラスが ICommand インターフェースを実装し、コマンドの実行と CanExecute のチェックを行います。また、YourViewModel クラス内で ICommand のインスタンスを作成し、それを通じてコマンドの実行処理や実行可否の条件を指定します。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.24 10:34:24


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: