【问题标题】:In WP7.1 ListBox selected index does not seem to work as expected. How a selecteditem can be displayed on top?在 WP7.1 ListBox 中,选定的索引似乎没有按预期工作。如何将所选项目显示在顶部?
【发布时间】:2012-10-12 12:14:30
【问题描述】:

场景:

  • 在 windows Phone 7 中,我使用的是列表框。
  • 假设有 200 项。
  • 现在我选择列表的第 150 项
  • 我希望加载列表并在加载后选择(并显示)列表顶部的第 150 项。

问题:

  • 我正在使用本页提到的 HookScrollViewer()(ListBox offset in WP7)
  • 第一次加载项目时,列表没有显示正确的项目(比如显示第 148 个项目)。
  • 我离开该页面并再次单击第 150 项
  • 现在列表索引是正确的,它正好在顶部显示第 150 项。

问题:

  • 我是否使用了正确的解决方案?
  • 我做错了什么,我试图找出解决方案但失败了!

提示:

  • 如果你有windows phone,请下载app:http://tinyurl.com/9298cdx
  • 打开任何章节并在章节中间添加书签(通过长按)。
  • 关闭应用程序,然后重新打开应用程序。
  • 点击书签打开它。
  • 第一次它不会去确切的位置。
  • 现在不要关闭应用程序,只需按返回按钮并再次单击书签即可。
  • 这次位置正确!
  • 问题是,第一次有什么问题?

阅读页面的代码:

非常感谢!

【问题讨论】:

  • 我检查了 XAML,没有任何问题。我删除了动画,它也不起作用。
  • 我为 ScrollViewer 和 ListBox 添加了 UpdateLayout(),但没有帮助。
  • 关键是它工作正常,第二次它应该工作,为什么它第一次不工作?有什么我想念的吗?
  • 我从未创建过 Windows 手机应用程序,您可以使用 Behaviors 吗?我将创建一个行为并在行为的 OnAttatch() 和 Invoke() 中使用 HookScrollViewer() 中描述的功能,这样即使页面加载它也会被调用,这听起来像是一个很好的解决方案,如果是这样我会写选择器的快速行为 ...
  • 谢谢eran,我也是初学者,这是我的第一个移动应用程序,当我开始这个时,我对c#一无所知。因此,我不知道行为是否会解决问题。不过我想试试。请把它写下来,我会试试的。谢谢!

标签: c# windows-phone-7 xaml


【解决方案1】:

经过努力,我找到了实际的问题及其解决方案。

实际问题:

  • 我正在使用外部字体,而不是默认包含在 WP 中的字体。
  • 外部字体需要一些时间才能加载到内存中,然后才会显示文本。
  • 与此同时,列表已加载,而字体正在加载。
  • 最后显示文本,并且(可能是因为展开),选定的索引位置被向下移动。
  • 在不关闭应用的情况下,字体似乎停留在内存中,下次用不了多久,指针id就正确显示了。

我的解决方案:

  • 我在加载主页时加载了(外部)字体。它花费的时间可以忽略不计,因此不会影响应用的效率(就加载时间而言)

我希望任何架构师可以更好地解释发生了什么,或者换句话说,我有兴趣了解“实际问题”的技术背景。

非常感谢所有提出建议的人。

【讨论】:

    【解决方案2】:

    我猜你的数据没有更新。你可以尝试使用 INotifyPropertyChanged ,看看例子你就会明白如何使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-15
      • 2016-01-24
      • 1970-01-01
      • 2022-12-17
      • 2011-06-10
      • 2019-06-14
      • 2021-06-07
      • 2013-02-10
      相关资源
      最近更新 更多