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

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

2024.03.18
XML
カテゴリ: C#.NET


`ICommand`はMVVM(Model-View-ViewModel)パターンにおいて、ビューモデル(ViewModel)内で実装されることが一般的です。


`ICommand`は、UIコントロール(ボタンなど)とビューモデルの間のコマンドのバインディングに使用されます。これにより、ユーザーの操作(たとえば、ボタンのクリック)をビューモデルのコマンドと関連付けることができます。そして、ビューモデルはそのコマンドに対応するロジックを実行します。


通常、ビューモデル内に`ICommand`を実装するには、次の手順が取られます:


1. `ICommand`の実装クラスを作成します。このクラスは通常、`ICommand`インターフェースを実装し、`Execute`メソッドと`CanExecute`メソッドを提供します。


2. ビューモデルクラス内に、`ICommand`のプロパティを定義します。このプロパティは、ビュー(UI)とバインディングされるコマンドを表します。


3. ビューモデルのコンストラクタなどで、コマンドのインスタンスを作成します。


4. ビューモデルのコンストラクタなどで、各コマンドに対応するロジックを実装します。


以下は、簡単な例です:


```csharp

using System;

using System.Windows.Input;


namespace MVVMExample.ViewModel

{

    public class RelayCommand : ICommand

    {

        private readonly Action _execute;

        private readonly Func<bool> _canExecute;


        public RelayCommand(Action execute, Func<bool> canExecute = null)

        {

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

            _canExecute = canExecute;

        }


        public event EventHandler CanExecuteChanged;


        public bool CanExecute(object parameter)

        {

            return _canExecute == null || _canExecute();

        }


        public void Execute(object parameter)

        {

            _execute();

        }

    }

}

```


このコードでは、`RelayCommand`という`ICommand`の実装クラスを定義しています。次に、ViewModel内でこれを使用してコマンドを実装します。


```csharp

using System.Windows.Input;

using MVVMExample.ViewModel;


namespace MVVMExample.ViewModel

{

    public class MainViewModel

    {

        public ICommand MyCommand { get; private set; }


        public MainViewModel()

        {

            MyCommand = new RelayCommand(ExecuteMyCommand, CanExecuteMyCommand);

        }


        private void ExecuteMyCommand()

        {

            // コマンドの実行ロジックを記述

        }


        private bool CanExecuteMyCommand()

        {

            // コマンドの実行可否を判定するロジックを記述

            return true;

        }

    }

}

```


このように、ビューモデル内に`ICommand`を実装することで、ビューとビューモデルの間でコマンドを処理する仕組みが実現されます。






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

Last updated  2024.03.18 06:58:16


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

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