問題タブ [delegatecommand]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
39 参照

wpf - WPF Interaction.Behaviors/EventTrigger はどのように WPF の UI を更新しますか?

カスタム UserControl を持つ WPF アプリケーションがあり、Microsoft.Xaml.Behaviors ライブラリの単純な EventTrigger を使用してマウス イベントに応答したいと考えています。ViewModel クラスの SelectedProperty が変更されたことを反映して、表示または非表示にする必要があるキャンバスもあります。私の編集コマンドが発生し、マウスの右ボタンがクリックされたときに ViewModel クラスで SelectedProperty を false に更新する責任があります。

これが私のデリゲートコマンドクラスです:

ICommand と SelectedProperty を使用した ViewModel クラスは次のとおりです。

編集コマンドを使用するユーザー コントロール コードを次に示します。

また、プロパティを使用して SelectedProperty 状態に基づいてキャンバスを非表示および表示する別のユーザー コントロール:

マウスの右ボタンをクリックすると、EditNodeHandler が実行され、パラメーターは正しい ViewModel インスタンス (選択 == true) になります。Visual Studio のハンドラー コードにブレークポイントとブレークを配置することもできます。ただし、ハンドラーで Selected プロパティが false に設定されている場合、キャンバスは非表示になりません。Snoop デバッガーを使用して DataContext を確認すると、手動で SelectedProperty を false に設定でき、ユーザー インターフェイスは期待どおりに Canvas を非表示にします。

では、コマンド ハンドラーがユーザー インターフェイスを期待どおりに更新しないのはなぜでしょうか。