在我的项目中,我在WP7和WP8客户端之间共享了一个库。该库包含视图,视图模型和其他有趣的数据。
我还想使用最新版本的Windows Phone Toolkit。
我遇到的问题是,虽然我的xaml代码是兼容的,但我遇到了运行时错误,因为LongListSelector存在于Windows Phone Toolkit for wp7和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的情况下解决这个难题?
答案 0 :(得分:0)
毕竟这是我决定实施的解决方案:
我认为包含WP7和WP8的所有视图的库不适合在各自平台上实际上不同的视图。因此,我创建了两个有问题的视图副本,并将它们放在各自的WP7和WP8应用程序项目中。
这在xaml中创建了一些重复 - 幸运的是,我的xamls不是很复杂 - 只是少数控件,风格。所以我为每个页面创建了一个样式字典,并放在WP7项目的页面旁边。
我将字典文件链接到WP8项目中。我为后面的代码做了同样的事情。
在我的xaml文件中,我将本地词典文件与这些页面上使用的样式相关联:
通过这个解决方案,我实现了最少的代码重复,所有样式仍然在一个地方,并且唯一不同的代码(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)