2017-01-30 52 views
-2

我們的經理希望我們正在開發的WPF應用程序能夠爲用戶完全自定義。假設頁面上有一個文本框。他希望用戶能夠將其放在任何他想要的位置,使其具有任何顏色或字體大小,等等。現在,實現此操作的目的是將每個屬性存儲在SQL數據庫中,然後在您的後面的代碼。如何使您的XAML視圖靈活且可供用戶自定義?

在我看來這是一個糟糕的實現,因爲它會降低整個過程。當我瀏覽頁面時,加載時間至少爲10秒,後面的代碼獲取所有屬性,將它們轉換爲對象,將對象實現到視圖中,然後創建該視圖。我認爲必須有更好的方式來做到這一點,因爲它吸收了很多時間和資源。有沒有更好的實現呢?

回答

2

有很多方法可以做到這一點,但是如果你需要「一切都可以改變」,那麼......有一種快速的方法來做到這一點,甚至沒有任何外部工具。

默認情況下,XAML被編譯幷包含在.exe/.dll中,但XAML可以從文件/字符串/任何內容動態加載。把XAML放在一個文本文件中(它已經是),改變編譯選項不編譯它,但包括「內容」和「總是複製」,動態加載該文件(XmlReader.Load method)。

現在用戶可以編輯XAML,應用程序將收聽它。

當然:

  • 應用程序/窗/等將需要重新加載/每次更改文件
  • 他們現在可以在UI層改變一切後重新啓動
  • 他們必須正確編輯文件,他們可能需要一些基本的訓練
  • 您的應用程序可能得到一點更復雜,因爲它現在將很難找到正確的控制e UI,但如果你使用虛擬機和綁定和命令,那麼你本質上是安全的,以防止這個問題(如果你不使用這種方法,那麼考慮開始)
+0

是的,這也是我的想法。但我有點懷疑,但你確信這可能是最好的方法。 – user2657943

+0

我很害怕可以編輯xaml的用戶(有或沒有基本培訓)。簡單的例子:UI元素有一個默認的背景和一個觸發器,在某些condion下改變背景的樣式。那麼用戶就會在ui元素上寫'Backround ='White'',而忽略風格。接下來發生的是100個關於不工作觸發器的錯誤報告。另一方面,Visual Studio IDE是可定製環境的一個很好的例子(帶有可移動和可縮放的窗口以及一個漂亮的Tools \ Options \ Enviroment \ Fonts and Colors設置對話框) – ASh

+0

@ASh:對於當前的方法也是如此 - 只是想象用戶編輯配置數據庫並將按鈕移動到位置(+ 34000,+ 23000)或設置背景:white和textcolor:whitesmoke。考慮到* [經理,誰]希望用戶能夠將[控制]放在他想要的任何位置,使其具有任何顏色或字體大小等等*,這實際上是一種低成本,低成本的方式如果他們真的想要這樣做(他們的'用戶'可能真的有時間和技術技能,對嗎?),或者讓經理重新思考他的方法和要求,他們完全實現了目標。 – quetzalcoatl

相關問題