2008-12-11 93 views
80

如何在WPF中設置Tab鍵順序?我有一個ItemsControl,其中一些項目已展開,一些已摺疊,並且想要在Tab鍵時跳過摺疊的項目。在WPF中設置Tab鍵

任何想法?

+0

傑西的建議的回答是去,似乎是默認行爲的方式...... – 2008-12-12 10:20:59

+0

? – 2013-02-06 11:22:44

回答

55

可以通過在XAML元件上設置KeyboardNavigation.IsTabStop跳過在標籤序列中的元素。

KeyboardNavigation.IsTabStop="False" 

您可以設置一個觸發器,根據展開狀態切換此屬性。

+0

您也可以是Focusable =「False」,將其從鍵盤焦點以及Tab鍵順序中移除。 – 2011-07-28 23:51:32

+1

@Geoff我用一堆按鈕做了這個,它不起作用,只是fyi。 – ToastyMallows 2013-06-07 16:00:41

-9

而且.NET 3.0有一個類,自動設置選項卡順序,您可以根據您的形式部分覆蓋。

(new TabOrderManager(this)).SetTabOrder(TabOrderManager.TabScheme.AcrossFirst); 
78

如果你要明確設置你的表單元素的標籤排序,下面的附加屬性是應該幫助:

<Control KeyboardNavigation.TabIndex="0" ... /> 

我說:「應該幫助」因爲我沒有發現它非常可靠,但我可能需要閱讀更多關於它是如何使用的。我只發佈這個半熟的答案,因爲沒有人提到這個屬性。


請注意,在Win RT中,該屬性只是TabIndex="0"

22

<Control KeyboardNavigation.TabIndex="0" ... />工作完全正常...... 對於示例 -

<ComboBox Height="23" 
      Margin="148,24,78,0" 
      Name="comboBoxDataSet" 
      VerticalAlignment="Top" 
      SelectionChanged="comboBoxDestMarketDataSet_SelectionChanged" 
      DropDownOpened="comboBoxDestMarketDataSet_DropDownOpened" 
      KeyboardNavigation.TabIndex="0" /> 
<ComboBox Height="23" 
      Margin="148,56,78,0" 
      Name="comboBoxCategory" 
      VerticalAlignment="Top" 
      SelectionChanged="comboBoxDestCategory_SelectionChanged" 
      DropDownOpened="comboBoxDestCategory_DropDownOpened" 
      KeyboardNavigation.TabIndex="1" /> 

將允許您通過使用TAB鍵這兩個組合框導航。

9

我認爲這裏有一個更容易的解決方案, 在你的控制或窗口或任何範圍內的頂部,您可以添加:

KeyboardNavigation.TabNavigation="Cycle" 

這也automaticaly忽略了崩潰的標籤。

4

已經對我在過去的工作另一種方法是簡單地刪除所有明確TabIndex報表,並讓控制使用他們在XAML中聲明的順序創造了神奇。

這當然可能會要求您對控件重新排序。但這是一個簡單的複製粘貼操作。