想知道有没有好的方法来处理这个问题。
在WP7.1中,我们可以利用优秀的Windows Phone Toolkit包含一些有用的控件,如LongListSelector和Panorama。它们是Microsoft.Phone.Controls.Toolkit
程序集的一部分。
在WP8中,我们不需要toolkit来使用那两个控件,因为它们已经是官方的Microsoft.Phone.Controls
程序集的一部分了。
我将我的应用设计成多目标,因此我有两个手机项目,WP71和WP80,在WP80中我将文件链接到WP71中的文件。
这很好地工作,直到我尝试在XAML页面中使用Panorama或LongListSelector控件。在WP80项目中,如果我引用手机toolkit的WP80 DLL,则它不包括上述两个控件,因为它们已经存在。
问题是,WP71需要在XAML顶部声明命名空间,而对于两个项目,命名空间是不同的。
WP71:
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
<toolkit:Panorama />
WP80:
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
<phone:Panorama />
因为每个项目需要指向不同的程序集,如果我只使用一个命名空间,那么我无法构建这些项目,因为每个项目都认为命名空间不正确。
我认为我不能在我的XAML中使用编译常量,否则那将是一种解决方法。
我的解决方法最初是在我的WP80项目中引用旧的WP71 DLL。但其他第三方库绑定到官方的8.0 SDK DLL(如我的Caliburn),所以会出现问题。
我该如何解决这个问题?我脑海中唯一的想法是通过代码后台创建控件的实例:( 是否有更好的方法?
Ex
方法可能更好。对于LongListSelector
,您需要创建一个新视图,因为它似乎工作方式不同。在WP7中,默认使用分组,但在WP8中不是这样,因此您必须更改属性。 - kamranicuspublic class Panorama : Microsoft.Phone.Controls.Panorama {}
和public class PanoramaItem : Microsoft.Phone.Controls.PanoramaItem {}
就可以了。 - Cœur