防止滚动嵌套列表

时间:2010-10-31 00:25:39

标签: silverlight windows-phone-7

我有一个包含嵌套列表框的应用程序,它是另一个列表的项目模板中listbox.itemtemplate内的列表框。我想阻止滚动内部列表框,而只是滚动外部列表框。目前,任何一个列表都可以滚动,这对用户来说有点混乱。

|-----------------------
|
| List Item 1
|    |---------------
|    |  Inner item 1
|    |  Inner item 2      <--scrolls and I don't want it to
|    |--------------
| List Item 2

3 个答案:

答案 0 :(得分:2)

我会假设你知道你在这里做了什么,但我也会考虑一些有关性能考虑因素的事情。

关于解决阻止内部列表框的问题,您可以使用blend来重新模拟内部列表框并将 ScrollViewer 替换为 ContentPresenter 。这将阻止它滚动。

请注意嵌套列表框的性能注意事项。特别是你想尝试避免使用不同长度的内部列表框(你的数据可能已经满足了这一点)。

可变高度列表框项最多会破坏阻碍滚动性能的UI虚拟化。

在最糟糕的情况下,仍有报告出现在能够滚动到列表末尾的人遇到问题(一个ctp问题被认为是在测试版中解决,但仍然存在一些人的问题。)

您也可以考虑使用其他实现来简化您正在显示的内容,或者对内部容器使用更轻量级的控件。例如StackPanel。当然,您可能喜欢listbox,因为它能够迭代您的数据。您可以评估自己的表现。我建议在设备上进行测试,因为这可能与模拟器不同。

最后,您可能还想查看不久前放在一起的指南。

Silverlight for Windows Phone 7: ListBox Scroll Performance

为了在设备上滚动性能,有很多关于保持列表框不太复杂的评论。

在最佳表现时,列表框滚动非常好。

答案 1 :(得分:0)

我从未在小屏幕设备上看到过这种情况。

将您的“内部列表”放在单独的页面上。

这将避免您的问题,并允许您创建一个行为与用户可能也使用的其他应用程序的行为相匹配的应用程序,从而使您的应用程序更容易为您的用户。使用/理解

答案 2 :(得分:0)

ScrollViewer.VerticalScrollBarVisibility =“已禁用”在类似的情况下为我工作。