1

我正在创建一个将在浏览器中运行并使用 ComponentArt 提供的一些数据可视化内容的 silverlight 应用程序。在某些时候,我还想创建一个 WinRT xaml/c# 版本,以便它可以作为 Windows 商店应用程序运行所有版本的 Windows 8,包括 WindowsRT。

我的问题是我如何才能在两个版本之间获得最大的代码重用。除了拥有 2 个版本之外,我没有其他方法(因为我使用 componentart 并且不能使用 html/js 方法)。特别是 Silverlight 应用程序中使用的 xaml 对 Windows 商店应用程序的可移植性如何?

4

1 回答 1

2

您的 XAML 与您使用的功能一样可移植。您不能重用相同的 XAML 文件,因为它们使用不同的命名空间和 xmlns URI 方案,而且您很可能希望 UI 略有不同,因为 Silverlight 主要是鼠标+键盘 UI,而 WinRT/XAML 主要是触摸。

确保使用 MVVM 能够重用大量非 XAML 代码。选择要使用的控件时 - 确保它们在 WinRT/XAML 中可用或有很好的替代品。我看到的一些缺失的东西是方法WriteableBitmap.Render()、、、RadialGradientBrush/绑定、TypeConverterAttribute或 控件。尽管有很多缺失控件的开源版本 - 您很可能希望为 Windows 应用商店应用程序使用替代 UI 设计方法,因为这些方法不适用于触控。StyleSetterTreeViewDataGridGridSplitter

供参考 - 我花了大约 2-3 个小时将TreeView控件从 Silverlight Toolkit 移植到 WinRT,大约花费了大约Calendar20-30 个小时来移植Chart带有多种数据点和系列的控件 - 这是最重要的Mahmoud Moussa 的原始端口。根据您使用的功能的复杂性 - 所需的工作量显然会增加。如果您只是使用Buttons, TextBoxes, TextBlocks, RadioButtons, CheckBoxes等 - 您主要可以复制和粘贴来移植 XAML。我还会避免重新模板化控件,因为这些平台之间的模板部分和视觉状态/视觉状态组略有不同,因此您需要重做工作或花时间更正模板。

于 2013-03-06T17:59:57.080 回答