2017-04-21 70 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