2013-08-28 37 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)