我有另一個建議你 - 真正的問題是:
「我想,讓一個屏幕的簡單的佈局在運行 - 編輯通過編輯XAML的時間,有誰知道這是否可能?「
答案肯定是「YES」!有很多方法可以做到這一點,當然做一些假設。
如果您不需要在XAML的「動態」部分中處理事件或編寫自定義值轉換器(或其他任何通常會在代碼中執行的操作),那麼您可以簡單地使用XamlReader類來解析包含XAML的XAML文件或字符串。既然你只是編輯佈局,我認爲這些假設是正確的。
所以,這裏是我會做什麼:
1)撰寫您所有的自定義控制,數據模型,數值轉換器等,並且在裝配他們堅持。
2)加載該程序集,可以通過讓應用程序引用它或動態加載它 - 兩者都可以工作。
3)創建一個字符串/文件/資源(可以選擇),它具有用於佈局的XAML,並將.NET名稱空間映射到XML名稱空間。確保根元素沒有「x:Class」屬性,因爲您沒有代碼背後的代碼!該字符串將使用標準的WPF控件(如StackPanel)來佈局自定義控件。 (當然你也可以編寫自定義佈局控件)。
4)允許用戶編輯此字符串。當他們編輯它時,使用XamlReader解析文件,然後在窗口中顯示生成的UIElement。
BINGO!
一個問題 - 每次更改XAML時,都會拋出GUI並創建一個新的問題。如果你的圖形用戶界面是健康的(即使當前的插入符號位置很重要),用戶會很快感到惱火。這取決於你打算使用什麼 - 這可能不是問題。
我希望通過一些更多的工作,您可以編寫一個MarkupExtension,用於引用您嘗試佈局的部分。這樣,佈局更改時可以重用它們。
我希望這很清楚。如果沒有,讓我知道,我可以擴展這個概念 - 它會創建一個不錯的博客條目。
FWIW,我能用FF3打開它。如果有問題,我安裝.NET 3.5SP1。 – Andy 2008-12-01 17:23:53
但它並沒有真正回答這個問題。操作系統明確指出,這是一個WPF應用程序,所以XAML在Web瀏覽器中顯示的能力完全沒有意義。 – GalacticCowboy 2008-12-01 18:54:31
我使用'Web瀏覽器'來解釋LooseXAML概念的更多特徵。 – 2008-12-02 22:38:45