在 Windows Phone 8 的混合示例数据中使用 ListBox 而不是 LongListSelector

Posted

技术标签:

【中文标题】在 Windows Phone 8 的混合示例数据中使用 ListBox 而不是 LongListSelector【英文标题】:Usage of ListBox instead of LongListSelector in Blends Sample Data for Windows Phone 8 【发布时间】:2012-12-10 11:39:40 【问题描述】:

我只是在试验与Corinna Black demonstrated in this Video 相同的示例应用程序(大约 21:40)。她在 Blend 中创建了示例数据,并将其作为 ListBox 绑定到 Panorama Item 的 Grid。当我将集合拖放到设计器时,这是 Blend 将为我提供的唯一选项。

从 Windows Phone 8 开始,ListBox 被 Windows Phone Toolkit 的 LongListSelector 取代。我现在的问题是:Blend 怎么可能使用 ListBox 而我却不能在 Visual Studio 2012 中使用 ListBox,尽管我已经创建了一个仅限 Windows Phone 8 的项目?如果我尝试在 XAML 代码中用 LongListSelector 替换 ListBox,Blend 会报错:

名称空间“http://schemas.microsoft.com/client/2007”中不存在名称“LongListSelector”

我认为 ListBox 的使用已被弃用,因为 LongListSelector 中的滚动性能更好。那么为什么 Blend 使用旧的 ListBox 而不是应该更好的 LongListSelector 呢?以及如何使用 LongListSelector 为 Windows Phone 8 应用程序创建示例数据?

谢谢!

【问题讨论】:

【参考方案1】:

我找到了问题的答案:LongListSelector 不是普通库的一部分。它是Windows Phone Toolkit library 的一部分,必须使用 NuGet 预先添加。

将新命名空间添加到您的 xaml:

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

现在您可以使用

访问 LongListSelector
<phone:LongListSelector/>

然后您可以分配一个 ItemsSource,甚至可以与设计数据混合使用它。

【讨论】:

【参考方案2】:

longlistselector 现在是核心 SDK 库的一部分。我建议使用它而不是工具包的 LLS。

核心库 LLS 用于无缝替换您的 WP7 列表框,如果您想使用该工具包的列表框,则必须进行一些自定义。

【讨论】:

以上是关于在 Windows Phone 8 的混合示例数据中使用 ListBox 而不是 LongListSelector的主要内容,如果未能解决你的问题,请参考以下文章

无法在 IBM Worklight 的 windows phone 8 中运行混合应用程序

采用从混合弹出到 Visual Studio Windows Phone 8

Windows Phone 8 按钮文本动画 - C# / XAML

如何使用 Windows Phone 8 发布到 RESTful API

推送通知后台任务崩溃 Windows Phone 8.1 模拟器/设备

如何使用 TCP 或 UDP 将数据从 Windows Phone 8.1 发送到 PC?