2017-04-21 69 views
0

我在我的WPF窗体中的其他控件之间有一个Listview。当我在控件之间进行选择并且ListView被聚焦时,ListView项自动被聚焦,而不是ListView本身,它允许使用键盘在项目之间移动。WPF - 将键盘焦点设置为像Tab这样的ListView项目

我想在用户单击ListView中的空白区域时出现相同的行为。所以我为ListView创建了一个Click事件,但不知道要执行哪个代码。我努力了;

ListView.Focus(); 
Keyboard.Focus(ListView); 

但始终ListView控件本身的重点是,这是有道理的我想.. ListView控件设置为可聚焦=虚假完全禁用聚焦,包括项目,并与周围的Tab键也不再工作重点。

如何在我的OnClick事件中重新创建Tab焦点行为?

+0

你试图把重点/选择第一个'ListViewItem'而不是'ListView'本身? – janonimus

回答

3

你可以尽量集中在ListView的第一项:

ListView.SelectedIndex = 0; 
ListViewItem lvi = ListView.ItemContainerGenerator.ContainerFromIndex(0) as ListViewItem; 
if (lvi != null) 
    lvi.Focus(); 
+0

谢谢你。然而,我无法想象这是在你点击tab来集中一个ListView时执行的,对吗?有没有函数只是调用ListView的“选项卡焦点”?我只是测试它,但它确实工作正常! – Bastiaan

+0

您不想在ListView上调整“选项卡焦点”。你想要关注ListViewItem。鼠标点击与tab键不同,所以我不明白为什么这种方法在这种情况下不起作用? – mm8

+0

它完美的工作,只是想知道这个代码是否实际上为ListView执行时,你的选项卡集中它,这一切.. 我现在唯一的问题是,当你点击一个实际的树视图项目,这个代码也被执行。我试着如果(发件人,getType()!= typeof(TreeViewItem),但我想他们独立开火 – Bastiaan