エンジニアの備忘録

エンジニアの私が備忘録や思ったことをちょいちょい書いてます。

C# WPF入門-簡単アプリ作成-03

環境

VisualStudio2019
OS:Windows10
プロセッサ:Core i7-10510U
メモリ:16GB
フレームワーク:4.7.2

前回までと今回の目標

WPFでButtonにCommandを入れました。
その方法をまだご覧になってない方は、是非どうぞ。
dasuma20.hatenablog.com


せっかくCommandを入れたのに、Buttonに入れるのは使いにくいです。
今回はFirstName、LastNameを入れたらCommandが実行されるようにします。


ちょっと整理

"Microsoft.Xaml.Behaviors.Wpf"をNugetから取得

TextBoxからCommandを実行するにはこのNugetが必要になります。
f:id:dasuma20:20191117154435p:plain
※1.1.3をインストール


XAMLの修正

1.behaviorsを読み込み

xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

上の部分に書くと下で使えます。
csファイルで言うと"using"みたいなものです。


2.Interactionに追加

<TextBox Text="{Binding Name.FirstName}" Width="100">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="LostFocus">
            <i:InvokeCommandAction Command="{Binding SetNameCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>

LostFocusはフォーカスが外れた時にCommandが発動されます。
他にも色々あります。
値が変わったらなど。


ViewModelを修正

public ICommand SetNameCommand {
    get { return new BaseICommand(SetNameCallBack); }
}
private void SetNameCallBack() {
    Name.SetName();
}
private bool CanNameCallBack() {
    return Name.CheckName();
}

"CanNameCallBack()"は使わなくなったので、BaseICommandの第2引数は削除しました。


完成

これでFirstName or LastNameに入力したらCommandが実行されて、
FullNameが入力されて画面に反映されます。
f:id:dasuma20:20191117160910p:plain

一応これで簡単アプリ作成は終わりとなります。