おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

【WPF】ボタンの活性/非活性を制御する!

はじめに

WPFでボタンの活性/非活性を制御する方法を備忘録として残したいと思います。

前提

今回の記事はPrismを用いていることが前提となります。

ボタン生成

まずはボタンを生成します。

<Button Margin="10"
    Height="20"
    Width="65"
    Content="登録"
    Command="{Binding SubmitButton}" />

SubmitButtonをViewModel側へバインドしています。

ViewModelにてSubmitButtonを定義

バインドしたSubmitButtonをViewModel側で定義します。 コンストラクタにて初期値を生成します。この際にObservesCanExecuteメソッドを追加し、その引数にてボタンが活性/非活性になる条件を記載します。

public MainWindowViewModel()
{
    SubmitButton = new DelegateCommand(/* ボタン押下時の処理 */)
        .ObservesCanExecute(() => /* 活性/非活性にする条件 */);
}

public DelegateCommand SubmitButton { get; }

おわりに

XAML側でIsEnabled要素を持って実装する方法もあるので、どちらを選択するかはプロジェクトの雰囲気次第ですかね。