2008-11-04 20 views
3

我正在研究一個WPF應用程序,它有一個表示XML的樹形視圖。我將XML加載到XDocument,然後將TreeView綁定到此對象。在XDocument之上的ViewModel

現在使用MVVM pattern,我想提供一個視圖模型的XDocument的頂部。什麼是我應該在ViewModel類中實現的一些東西。結合文本菜單

我想到的是,

  1. RoutedCommands命令在樹視圖,以允許添加節點,刪除節點,修改節點等
  2. 邏輯實際修改的視圖屬性和節點名稱。

我會朝着正確的方向走嗎?我還應該做些什麼來使它更簡潔,模塊化,同時易於理解。

我應該使用RoutedCommands還是實現ICommand接口並創建我的命令? 如何使用CommandBindings的附加屬性?在我所說的樹視圖應用程序中執行它有意義嗎?我有點不知所措,因爲有這麼多的選項可以實現這一點。

有沒有人有鏈接,示例代碼,做這種事情?參考實現可能是?

回答

1

我和你在一起。我開始與

(UI)< - >(XML)

其中XML表示LINQy XElements所以我得到的PropertyChange通知。

然後我添加了一些無狀態的幫助類來幫助我處理xml(公開屬性,驗證數據等)。我會在ObservableCollections中捆綁XElements,這樣我就可以綁定到它們。

閱讀關於M-V-VM,並決定將我的幫助類轉換爲ViewModels。問題: 輔助類生活在數據模型名稱空間中,它對UI沒有任何瞭解。 Helper類知道如何將數據庫行轉換爲XElement,ViewModel永遠不會看到這一點。 幫助程序類處理xml。 ViewModel不應該知道或關心。

所以我其實考慮實施

(UI)< - >(視圖模型)< - >(輔助)< - >(XML)

,但我只是不惜以幫助提高屬性改變事件只是在viewmodel中重新渲染它們。