2012-08-09 45 views
0

我想爲silverlight和wpf版本的應用程序使用相同的xaml文件。silverlight和wpf應用程序使用相同的xaml文件

唯一不同的是,我需要的是造型。我在xaml中使用了樣式。但對於Silverlight,我不想在我的xaml文件中使用任何樣式,因爲樣式是以主題的形式定義的應用程序級別。

是否有任何其他方式使用相同的xaml文件silvelight和WPF版本?否則,我被迫維護單獨的xaml文件。

+0

如果你真的想走這條路(不推薦),你可以使用TT文件。這意味着要創建一個更復雜的設置,以便更改同時出現,但共享文件可能無法再編輯。如果它們非常接近,則可以通過刪除樣式來編寫文本解析器來將WPF XAML轉換爲Silverlight XAML,但坦率地說,最好將文件分開(畢竟這是一個藝術問題):) – 2012-08-09 13:17:14

回答

0

你可以重複使用相當多的xaml,我有我將所有相同的文件,xaml和代碼隱藏起來的項目,並且它可以正常工作。

一些令人厭煩的事情是某些事情並不總是匹配得很好,例如wpf有一個用於itemscontrol的模板選擇器,而silverlight沒有。

使用SizeToContent往往會產生不同的行爲,我建議避免它,我不認爲它會向您購買任何東西。

我建議有一個單獨的「基礎」資源,您可以在兩個文件中保留區別。事件觸發器等事情幾乎沒有像銀光一樣被填滿。每個版本都有一個基類,它們將抽象出它們的差異,然後可以將這些鍵標記爲相同,並將它們用作鏈接文件中的靜態資源。

另一個大的疑難雜症是要注意順序事件發生的UI元素,裝載,佈局和應用模板事件被以不同的順序應用,所以如果你是讓你要小心有一個模板控制,其不是一個交易斷路器,你可以解決它,只是要知道。

其他值得注意的事 -silverlight命令需要花費更多的精力,你必須實現ICommand,這在wpf中並不總是這樣,我使用我的實現來幫助共享代碼。 -wpf是超集,它具有很多silverlight沒有的功能,通常它們是很方便的做事,你只是想避免這些。好的例子是預覽事件,不是Silverlight的例子,但你通常可以找到一個匹配行爲的事件。