2013-08-28 27 views
3

之间共享在我的项目我有WP7和WP8客户之间的共享库。该库包含视图,视图模型和其他有趣的数据。屏幕使用LongListSelector WP7和WP8

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

我碰到的问题是,虽然我的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两个平台?

+2

我刚刚发现这一点:http://laserbrain.se/post/2013/04/28/Fixing-the-assembly-hopping介于WP7和WP8.aspx之间,现在就试用它。 –

回答

0

毕竟这是解决方案,我决定实施:

  1. 我决定了,它包含WP7所有视图的WP8是不是观点,即实际上不同在各自的平台上正确的地方图书馆。因此,我创建的问题意见一分式两份,并把他们在各自的应用项目为WP7和WP8。

  2. 这创造了XAML一些重复的 - 幸运的是我,我的xamls不是很复杂 - 只是少数人控制,风格。所以我为每个页面创建了一个样式字典,并放置在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)