2013-03-14 59 views
1

我正在開發一個圖表工具,將控件拖放到圖表表面,就像VS或visio或paint一樣。在屏幕上存儲各種UI元素的數據的最佳方法

當被點擊右鍵時,每個控制/元素在表面上都會顯示一個上下文菜單「屬性」。 「屬性」對話框將顯示與每個元素/控件相關的一組數據。

我的問題是如何最好地存儲/加載這個非UI數據,附加到表面上的每個元素/控件。

例如,我在設計模式下創建LED1,斷路器1,連接器1的元件.i將爲每個元件存儲不同的數據組。

存儲邏輯將是這樣

for all elements on diagram 
    1. input element id,element type. 
    2. store data for that element ID. 

當我所創建的圖,運行作爲一個應用程序,相應的數據具有用於每個從存儲這些元件由加載程序被檢索。

裝載機邏輯可以是這樣的

所有元素上圖

  1. 檢測元件的ID和元件類型
  2. 獲得上述的id數據。

我以爲XML的資源。但我的經理似乎並不熱心。

我想知道最有經驗/精通的wpf開發人員將如何去做這件事。

+0

一個想法是,如果你能設法抽象出序列化邏輯,那麼你以後可以很容易地切換你存儲的格式。在我們項目的一個非常舊的迭代中,我們可以用一行xml和二進制序列化之間的代碼。但是,這些靈活性當然是有代價的。 – dowhilefor 2013-03-14 12:22:59

回答

0

我認爲這取決於規模。如果你有成千上萬的對象,你需要保存/加載哪個狀態,最好建立一個數據庫,在那裏你將存儲你的數據。如果它只有幾十個對象--XmlSerialization是最明顯的選擇。

1

我可能完全不瞭解您的問題。但我們以自定義二進制格式存儲我們的業務數據,這基本上只是業務數據樹的屬性值轉儲到數據庫中。根據您的要求,您需要確保處理文件格式(不同版本)的更改並正確處理交叉引用。每個對象都自行傾倒,第二遍確保交叉引用已解析。

除此之外,我會讓它儘可能地簡單:

模型類爲每種類型的圖表元素,它本身只是存儲業務相關的數據(我會考慮以圖表的應用業務的位置和大小數據)。這些模型可以做成Serializable。 管理員類操作這些模型,撤銷重做,查看模型創建等 和包裝這些模型和存儲額外的東西,如命令,用戶界面信息(選擇,展開等)的視圖模型。

對於視圖我強烈建議使用虛擬畫布創建自定義ItemsControl。

0

我不認爲XML是一個不好的方法。如果事實上這是Office子元素存儲的方式。看看微軟的XPS Packaging格式和API。(MSDN

相關問題