1

我正在創建一個Silverlight應用程序,該應用程序將在瀏覽器中運行,並使用ComponentArt提供的一些數據可視化內容。在某些時候,我還想創建一個WinRT xaml/c#版本,以便它可以作爲Windows應用的所有版本的Windows 8運行,包括WindowsRT。在Silverlight和WinRT應用程序之間共享代碼

我的問題是我該如何解決這個問題,以在兩個版本之間獲得最大代碼重用。除了有兩個版本之外,我看不出有其他方法(因爲我使用了組件,並且不能使用html/js方法)。特別是Silverlight應用程序中使用的xaml會如何移植到windows store應用程序?

回答

2

您的XAML與您使用的功能一樣便攜。你不能重複使用相同的XAML文件,因爲它們使用不同的命名空間和xmlns URI方案,而且你很可能希望使UI稍有不同,因爲Silverlight主要是鼠標+鍵盤UI,而WinRT/XAML主要是觸摸。

請確保您使用MVVM能夠重用很多非XAML代碼。在選擇使用哪些控件時 - 確保它們在WinRT/XAML中可用或有很好的選擇。我看到的一些丟失的東西是WriteableBitmap.Render()方法,RadialGradientBrush,TypeConverterAttribute,Style/Setter綁定,TreeView,DataGridGridSplitter對照。雖然有許多缺失控件的開源版本 - 但您很可能希望爲Windows應用商店應用使用其他UI設計方法,因爲這些方法不適用於觸摸。

僅供參考 - 我花了大約2-3個小時的移植從Silverlight工具包到的WinRT的TreeView控制,各地儘可能多的Calendar控制和20-30小時,以港口Chart控制其多種數據點和系列 - 這是馬哈茂德穆薩原來的港口之上。根據您使用的功能的複雜程度 - 所需的工作量顯然會增加。如果你只是使用Buttons, TextBoxes, TextBlocks, RadioButtons, CheckBoxes等 - 你大多可以複製&粘貼到端口的XAML。我還會避免重新設計控件,因爲模板部件和可視狀態/可視狀態組在這些平臺之間略有不同,因此您需要重做工作或花時間更正模板。

相關問題