這更多的是一個概念性問題。如果有幫助,可以說它屬於MVVM模式。我從未在WPF綁定研究中看到過這一點。通過綁定取消WPF中的更新
如果您有一個窗口,通過綁定連接到視圖模型並且用戶更新記錄,但在保存之前決定取消更新,那麼您認爲顛倒這些更改的最佳方法是什麼?
我能想到幾個可能性:
- 而是允許用戶更新主顯示,有第二個窗口彈出的綁定到虛擬機,並在副本編輯「保存「,將數據寫入原始虛擬機,然後更新回模型。 增加了保存功能的內存使用量和複雜性。
- 製作原始VM對象的「原始」副本,並在「取消」後,將該VM寫回原始(此時可以刪除副本)。 增加取消功能的內存使用量和複雜度。
- 創建VM中每個元素的副本,這些元素在創建時可能會發生更改,並且在「取消」時將這些值寫回到更改的元素上。 增加VM的大小和複雜性。
- 執行「取消」後,虛擬機命中數據源並重新加載記錄。 導致網絡流量和數據庫訪問流量,並可能延遲顯示更新回原始狀態。如果虛擬機已從另一個進程更新並且不應刪除這些「外部」更新,也可能會導致問題。
任何人都可以想到更好的解決方案,或知道WPF中的一些模糊的功能來處理這個「自動」?
我使用一個紀念碑的實現,它使用反射來自動保存/恢復標記有特定屬性的字段 - 很好,很簡單 –
我生成我的ViewModels,所以我不必編寫無聊的複製代碼,不要忍受反射遲緩 –
反射的最慢部分是獲取屬性定義,您可以按類型緩存,因此它的命中率也不算太差。不過,自動生成也是一個不錯的選擇 –