私はWPFに慣れていないので、私はWinformsでMVVMパターンを試したかったのです。私は、ボタンをクリックすると、APIを介してmsgを取得する非同期メソッドを開始するフォームを持っています。Winforms上のMVVM:無効なボタンを表示することができます(async/awaitを使用)
操作は、ビューモデルで実行されています。ここでは、一部のUI動作を制御するプロパティもあります。ビューモデルはFody Weaver Property Changedを介してINotifyOnPropertyChangedを実装し、ビューモデル自体をDataSourceとして受け取るBindingSourceを持ちます。
BindingSource bsViewModel = new BindingSource();
bsViewModel.DataSource = this; // this being the view model the BindingSource lives in
VMのプロパティは、これは、このグリッチを除いて正常に動作してDataBinding.Addとコントロールのプロパティ()にバインドされています。ボタンのテキストは正しく更新されますが、マウスの上にマウスを置いたとき(または、これらのボタンが配置されているUserControlでRefresh()を呼び出すとき)にのみ、ボタンの色付けが行われます。
同僚は、WinFormsではBindingSource、MVVMでは同じテクニックを使用していますが、非同期待機ではなくBackgroundWorkerを使用しています。彼はその問題を持っていません。彼のボタンは正しく無効になり、無効にするとホバー効果は表示されません。
この半無効ボタンの原因は何ですか?
私はWinformsに問題がなければMVVMを実装しています...あなたが問題を再現できるように、小さなコード例を投稿することができます。 。 – Sievajet