我有一个不知道如何解决的问题...我有一个可能包含很多项目的列表框。
当用户选择一个项目时,我会进行异步调用并获取一些数据并填充屏幕。用户可以按向下箭头键或向上箭头键在项目之间导航,问题是当用户按住向下箭头键时,选择变化很快,我的应用程序遇到问题....有没有干净的方法检测到用户按住向下键一段时间,暂停更新视图,并仅在他释放后更新它?
如果我解释不清楚,我很抱歉,
您是否尝试异步...
我猜是#2,当你开始大量异步调用来更新单独的视图时,你会遇到问题。正如@Ramhound 指出的那样,通过按住按钮和快速点击相同的按钮(或者只是作为韩国育雏战职业玩家点击离开)来快速更改选择没有区别。要解决这两个问题,您可以执行以下操作:
这样用户可以对选择做任何事情,你仍然只有在她实际选择了一些东西后才更新。调整时间以确保 UI 仍然活泼 :)
如果控件是可聚焦的,您可以覆盖 UIElement.OnKeyDown
所以在这种情况下,这实际上意味着创建列表框的子类,然后覆盖 OnKeyDown 函数。您可以通过这种方式捕捉到它,但这会使事情变得更加混乱。
或者您可以使用Keyboard.GetKeyStates查询键状态。
恕我直言,您应该只预加载数据。ListBoxes 使用“虚拟化堆栈面板”,它足够智能,不会显示不需要的信息。