在Silverlight和WinRT应用程序之间共享代码
我正在创建一个Silverlight应用程序,该应用程序将在浏览器中运行,并使用ComponentArt提供的一些数据可视化内容。在某些时候,我还想创建一个WinRT xaml/c#版本,以便它可以作为Windows应用的所有版本的Windows 8运行,包括WindowsRT。在Silverlight和WinRT应用程序之间共享代码
我的问题是我该如何解决这个问题,以在两个版本之间获得最大代码重用。除了有两个版本之外,我看不出有其他方法(因为我使用了组件,并且不能使用html/js方法)。特别是Silverlight应用程序中使用的xaml会如何移植到windows store应用程序?
您的XAML与您使用的功能一样便携。你不能重复使用相同的XAML文件,因为它们使用不同的命名空间和xmlns URI方案,而且你很可能希望使UI稍有不同,因为Silverlight主要是鼠标+键盘UI,而WinRT/XAML主要是触摸。
请确保您使用MVVM能够重用很多非XAML代码。在选择使用哪些控件时 - 确保它们在WinRT/XAML中可用或有很好的选择。我看到的一些丢失的东西是WriteableBitmap.Render()
方法,RadialGradientBrush
,TypeConverterAttribute
,Style
/Setter
绑定,TreeView
,DataGrid
或GridSplitter
对照。虽然有许多缺失控件的开源版本 - 但您很可能希望为Windows应用商店应用使用其他UI设计方法,因为这些方法不适用于触摸。
仅供参考 - 我花了大约2-3个小时的移植从Silverlight工具包到的WinRT的TreeView
控制,各地尽可能多的Calendar
控制和20-30小时,以港口Chart
控制其多种数据点和系列 - 这是马哈茂德穆萨原来的港口之上。根据您使用的功能的复杂程度 - 所需的工作量显然会增加。如果你只是使用Buttons, TextBoxes, TextBlocks, RadioButtons, CheckBoxes
等 - 你大多可以复制&粘贴到端口的XAML。我还会避免重新设计控件,因为模板部件和可视状态/可视状态组在这些平台之间略有不同,因此您需要重做工作或花时间更正模板。