【问题标题】:Sharing code between a silverlight and WinRT application在 silverlight 和 WinRT 应用程序之间共享代码
【发布时间】:2013-03-06 15:33:03
【问题描述】:

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

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

【问题讨论】:

    标签: windows silverlight microsoft-metro windows-runtime windows-store-apps


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2019-01-29
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多