我有一个问题,我不知道如何解决...... 我有一个可能包含很多项目的列表框。
当用户选择一个项目时,我会进行异步调用并获取一些数据并填充一个屏幕。 用户可以按下向下箭头键或向上箭头键在项目之间导航,问题是当用户按下向下箭头键时,选择变化很快,我的应用程序遇到问题......是否有干净的方式检测用户是否按下了按键一段时间,暂停更新视图,并在发布后才更新它?
如果我不清楚解释这个,我很抱歉,
答案 0 :(得分:1)
你是不是想要异步......
我猜测#2,当你开始大量异步调用来更新单独的视图时,你会遇到问题。正如@Ramhound指出的那样,通过按住按钮并快速点击相同的按钮(或者只是通过点击作为朝鲜战争的亲游戏玩家)来快速更改选择之间没有区别。要解决这两个问题,您可以执行以下操作:
通过这种方式,用户可以对选择做任何事情,只有在她实际选择了某些东西后才会更新。调整时间以确保UI仍然是活泼的:)
答案 1 :(得分:0)
如果控件是可聚焦的,您可以覆盖UIElement.OnKeyDown
所以在这种情况下,这意味着基本上创建列表框的子类,然后重写OnKeyDown函数。你可以这样抓住它,但这会让事情变得更加混乱。
或者您可以使用Keyboard.GetKeyStates查询关键状态。
但是,恕我直言,你应该只是预加载数据。 ListBoxes使用'virtualizing stack panel',它们足够聪明,不会显示不需要的信息。