在我的WPF應用程序中,有一個列表可以從中選擇一個項目。所選項目將顯示在ContentControl中以便進一步交互。根據所選項目的類型(可能有幾個),在ContentControl中使用適當的DataTemplate。到目前爲止,這對於數據處理業務應用程序來說應該沒什麼特別。ContextMenu命令綁定不與數據源一起更新
在每個DataTemplate中,有多個TextBoxes和其他控件將它們的值綁定到ViewModel類的特定屬性。從列表中選擇另一個項目時,所有這些都按預期進行更新。這些按鈕還在ViewModel的正確實例上執行它們的命令。
有一個上下文菜單項也執行一個命令,但這隻適用於第一個選定的項目。當從列表中選擇相同類型的另一個元素時,重新使用已經加載的模板視圖,上下文菜單中的命令將始終在第一個選定的項目上執行。所以綁定不會更新到ViewModel的正確實例。
使菜單項使用正確的ViewModel實例的唯一方法是選擇不同類型的項目,以便將模板更改爲另一個視圖。只有這樣上下文菜單才能正確更新。
爲什麼菜單項命令不會像視圖中的任何其他綁定一樣更新?它在加載時被讀取一次,但從未更新過視圖的生命週期。