windows-phone-7 - 带有 Windows Phone 工具包的多目标 WP7.1/WP8 应用程序 (Panorama/LongListSelector)

标签 windows-phone-7 xaml windows-phone-8 windows-phone silverlight-toolkit

想知道是否有人知道如何处理这个问题。

在WP7.1中,我们可以利用优秀的Windows Phone Toolkit包括一些有用的控件,例如 LongListSelector 和 Panorama。这些是 Microsoft.Phone.Controls.Toolkit 程序集的一部分。

在 WP8 中,我们不需要这两个控件的工具包,因为它们是官方 Microsoft.Phone.Controls 程序集的一部分。

我的应用程序是多目标的,所以我有两个手机项目,WP71 和 WP80,我将 WP80 中的文件链接到 WP71 中的文件。

这很好用直到我尝试在 XAML 页面中使用 Panorama 或 LongListSelector 控件。在 WP80 项目中,如果我引用电话工具包的 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。但是其他第 3 方库与官方 8.0 SDK DLL(在我的例子中是 Caliburn)绑定(bind),因此会导致问题。

我该如何解决这个问题?我脑海中唯一的想法是求助于代码隐藏来创建控件的实例:(有更好的方法吗?

最佳答案

不要使用链接,为每个链接创建一个单独的 View 。

另一种解决方案可能是在每个相关项目中创建一个 PanoramaEx 控件并继承自 Panorama。然后 View 将引用 PanoramaEx 控件,您仍然可以使用指向单个 View 的链接。也就是说,如果两个 UI 项目具有相同的命名空间。

编辑:命名空间中的 WP7 不是全景图:

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

我确实使用 ProgressBar 和 PerformanceProgressBar 的初始解决方案,我在每个 UI 项目中都有一个 ProgressBarEx,WP7 继承自 ProgressBar,WP8 继承自 PerformanceProgressBar 然后在 View 中我引用 ProgressBarEx

关于windows-phone-7 - 带有 Windows Phone 工具包的多目标 WP7.1/WP8 应用程序 (Panorama/LongListSelector),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15857571/

相关文章:

c# - 调试 Windows Phone 应用程序时无法理解此 Windbg 输出

android - WP7 中的等效 Intent

c# - 正确地在页面之间传递数据

c# - 如何在 DataGrid 中绑定(bind)两个依赖的 ComboBox

c# - UWP - 将自定义转换器应用于 x :Uid directive 设置的值

c# - LonglistSelector 在降低其高度时无法滚动到最后一项

windows-phone-7 - Windows Phone 7 - 在键盘上方移动内容

c# - 绑定(bind)到控件模板

c# - 以编程方式更改应用栏图标