使用LongListSelector的屏幕在WP7和WP8之间共享

本文关键字:WP8 之间 共享 WP7 LongListSelector 屏幕 使用 | 更新日期: 2023-09-27 18:29:14

在我的项目中,我有一个在WP7和WP8客户端之间共享的库。该库包含视图、视图模型和其他有趣的数据。

我还想使用最新版本的Windows Phone工具包。

我遇到的问题是,虽然我的xaml代码是兼容的,但我会遇到运行时错误,因为LongListSelector存在于wp7的Windows Phone Toolkit和WP8的框架代码中的不同程序集中。

在wp7:中

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

在wp8:中

xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"

如何在不需要为两个平台复制xamls的情况下解决这个难题?

使用LongListSelector的屏幕在WP7和WP8之间共享

毕竟这是我决定实现的解决方案:

  1. 我决定,包含WP7和WP8的所有视图的库不是用于在各自平台中实际上不同的视图的合适位置。因此,我创建了两个有问题视图的副本,并将它们分别放在WP7和WP8的应用程序项目中。

  2. 这在xaml中造成了一些重复——幸运的是,我的xaml不是很复杂——只是少数控件,样式化了。因此,我为每个页面创建了一个样式字典,并将其放在WP7项目中的页面旁边。

  3. 我将字典文件链接到WP8项目中。我对代码隐藏文件也做了同样的操作。

  4. 在我的xaml文件中,我将本地字典文件与这些页面上使用的样式链接起来:

  5. 有了这个解决方案,我实现了最小的代码重复,所有样式仍然在一个地方,唯一不同的代码(XAML)放在它真正属于的地方。

最后的文件夹树看起来像这样:

Solution
|-- Common Library
|    |-- Views 
|         |-- Page1
+-- WP7
    |-- Views
      |-- Page1
          |-- Page1.xaml  (Windows 7 specific markup)
          |-- Page1.xaml.cs (code behind file)
          |-- Page1.styles.xaml (common styles shared between wp7 and wp8 apps)
+-- WP8
|-- Views
      |-- Page1
          |-- Page1.xaml  (Windows 8 specific markup)
          |-- ->Page1.xaml.cs (linked from the WP7 project)
          |-- ->Page1.styles.xaml (linked from the WP7 project)