私は MVVM パターンを使用して WPF で作業していますが、WPF と MVVM の両方のニュアンスに頭を悩ませているため、一般的にはうまく機能しているようです。しかし、私は現在、特定の問題で立ち往生しています。私の実際のアプリケーションはかなり複雑なので、単純化するために、パターンに関する Josh Smith のほぼ定義的な記事を取り上げ、その中でアプリケーションを使用してみましょう。
図 2 を考えてみましょう。ユーザーが名前と姓のフィールドに何かを入力したとします。次に、ユーザーは、別の顧客タブをクリックするか、同じアプリケーション内のまったく異なるビューモデルをクリックして、ワークスペース (ビューモデル) から完全に離れます。この場合、私が望んでいるのは、アプリケーションが「変更を保存しますか? はい/いいえ/キャンセル」と尋ね、適切に応答することです。これは...課題を提示しました。
ユーザーが最初のパスで PreviewLostKeyboardFocus が必要であることを「キャンセル」できるようにしたいので (Handled=true を設定してフォーカスシフトをキャンセルできるため)。ただし、一部のユーザー アクション (別のワークスペースのタブをクリックするなど) では、キーボード フォーカスが移動しません。LostFocus はその点で私をよりよくカバーしますが、それはフォーカスが既に失われた後でのみ (もちろん、元に戻すことはできますか?)、イベントがビュー自体からのものであったかどうかを判断する際に問題があります (つまり、フォーカスを離れています)。ビュー全体) または含まれているオブジェクトから単純にバブルアップした場合。
そして、これらすべての全体像-これはビューの問題のようですが、それは魔法のビューモデルではなくビューでコードを書くことを意味します. これは、私がこれを正しく見ていないと私に思わせます。
ですから、このすべてを明確にする大きな概念的なa-haが欠けていることを願っています. ヘルプ?