次の方法で共有


コントロールの無効化はVMで行う?

質問

2017年4月13日木曜日 5:18

お世話になっております。

勉強の為ツールを作っていて、ふと思ったのですがWinformsでは当然の処理である
【ボタンクリックにより開始した後のボタンの無効化】について教えてください。

Winformsの場合、
ボタンクリックイベント⇒当該ボタンの無効化⇒処理⇒当該ボタンの有効化
という流れですが、
WPFでもView側にアクセスしてプロパティを制御するものなのでしょうか?

Winformsと同様の制御にしてよいのか教えてください。

すべての返信 (3)

2017年4月13日木曜日 5:29 ✅回答済み

プロパティを制御することは変わりないですが、ViewModelに有効かどうかを表すプロパティを用意し、それによってボタンを有効にするしないをスタイルを使ってボタンを制御することが、WPF & MVVM流になると思います。よって、ボタンがクリックされた時にViewModelは、そのプロパティ値を変化させるだけで実現できます。

★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/


2017年4月13日木曜日 5:32 ✅回答済み

MVVMであれば、VMに記述されるコマンドの処理で、

this.CanHoge = false;
await FugaAsync();
this.CanHoge = true;

みたいに記述すればいいんじゃないでしょうか。で、<Button IsEnabled="{Binding CanHoge}">みたいにIsHogeをIsEnabledにバインドする。

// ICommand.CanExecuteはちょっといじりにくい気がする。


2017年4月13日木曜日 6:11

お二人とも、ご回答ありがとうございます。

プロパティを使って無効化を実現するのですね、
ありがとうございます勉強になりました!