私の WPF アプリケーションには、項目を選択するためのリストがあります。選択された項目は、その後の操作のために ContentControl に表示されます。選択した項目のタイプ (複数ある場合もあります) に応じて、適切な DataTemplate が ContentControl で使用されます。これまでのところ、これはデータ処理ビジネス アプリケーションでは珍しいことではありません。
各 DataTemplate には、値を ViewModel クラスの特定のプロパティにバインドする複数の TextBox およびその他のコントロールがあります。リストから別の項目を選択すると、これらすべてが期待どおりに更新されます。ボタンは、ViewModel の正しいインスタンスでコマンドも実行します。
コマンドも実行するコンテキスト メニュー項目が 1 つありますが、これは最初に選択した項目に対してのみ機能します。同じタイプの別の要素がリストから選択され、既に読み込まれているテンプレート ビューを再利用すると、コンテキスト メニューのコマンドは常に最初に選択されたアイテムに対して実行されます。そのため、バインディングは ViewModel の正しいインスタンスに更新されません。
メニュー項目で正しい ViewModel インスタンスを使用する唯一の方法は、異なるタイプの項目を選択して、テンプレートを別のビューに変更することです。そうして初めて、コンテキスト メニューが正しく更新されます。
ビュー内の他のバインドと同じように、メニュー項目コマンドが更新されないのはなぜですか? ロード時に一度フェッチされますが、ビューの存続期間中は更新されません。