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

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

2024.03.14
XML
カテゴリ: C#.NET


以下は、C#WPFで`ICommand`を使用するサンプルコードです。このサンプルでは、`ICommand`を実装してボタンのクリックイベントを処理し、MVVMパターンを使用してボタンのクリックをハンドリングします。


まず、`RelayCommand`と呼ばれるカスタムの`ICommand`実装を作成します。


```csharp

using System;

using System.Windows.Input;


public class RelayCommand : ICommand

{

    private readonly Action<object> execute;

    private readonly Func<object, bool> canExecute;


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

    {

        this.execute = execute ?? throw new ArgumentNullException(nameof(execute));

        this.canExecute = canExecute;

    }


    public event EventHandler CanExecuteChanged

    {

        add { CommandManager.RequerySuggested += value; }

        remove { CommandManager.RequerySuggested -= value; }

    }


    public bool CanExecute(object parameter)

    {

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

    }


    public void Execute(object parameter)

    {

        execute(parameter);

    }

}

```


次に、この`RelayCommand`を使用してビューモデルを作成します。


```csharp

using System;

using System.Windows.Input;


public class MainViewModel

{

    public ICommand ClickCommand { get; }


    public MainViewModel()

    {

        ClickCommand = new RelayCommand(OnClick);

    }


    private void OnClick(object parameter)

    {

        Console.WriteLine("ボタンがクリックされました!");

    }

}

```


最後に、XAMLファイルでビューを作成します。


```xml

<Window x:Class="CommandExample.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:CommandExample"

        mc:Ignorable="d"

        Title="MainWindow" Height="450" Width="800">

    <Window.DataContext>

        <local:MainViewModel/>

    </Window.DataContext>

    <Grid>

        <Button Content="クリック" Command="{Binding ClickCommand}"/>

    </Grid>

</Window>

```


このコードでは、ボタンがクリックされたときに`MainViewModel`の`ClickCommand`が実行されます。`RelayCommand`を使用することで、XAMLファイルで`Command`プロパティに直接バインドすることができます。






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

Last updated  2024.03.14 04:16:06


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

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