2011-10-24 38 views
2

我剛纔把自動完成框的TabIndex

two textbox(tabindex=0,2), 
one autocompletebox(tabindex=1) 
and one button(tabindex=3) 

但在運行時autocompletebox終於找到標籤。

KeyboardNavigation.TabIndex="0" 

設置選項卡嘗試KeyboardNavigation

的每一個模式,我也推杆在XAML控制按它的TabIndex順序。

現在爲什麼autocompletebox最後一次?什麼是它的解決方案

+0

「autocompletebox」是一個自寫控件嗎? – Fischermaen

+0

使用來自WPFTookit -'xmlns:controls =「clr-namespace:System.Windows.Controls;程序集= System.Windows.Controls.Input.Toolkit」的控件「 – Balu99

+0

」託管「在哪裏?在一個StackPanel中,還是還有什麼?請提供一個代碼示例。 – Fischermaen

回答

0

所有你需要做的就是添加

IsTabStop="True" 

的autocompletebox爲我工作

0

解決方案:

有關AutoCompleteBox

一個需要注意的是,它不識別TabIndex屬性。它目前僅僅是Silverlight控件的直接端口,顯然Silverlight沒有TabIndex概念。事實證明,TabIndex屬性在WPF中並非真的需要,您將始終通過您的控件按照它們在您的XAML中定義的順序進行選擇。因此爲了確保選項卡順序將得到遵守,請不要在任何控件上設置TabIndex屬性,只要確保按照所需的選項卡順序將它們放入XAML中即可。

Source

2

這是使用這種控制的一個例子。在樣式上設置TabIndex或任何TextBox的屬性:

<controls:AutoCompleteBox ItemsSource="{Binding Cities}" 
          FilterMode="Contains" 
          IsTextCompletionEnabled="True" 
          MinimumPrefixLength="2" 
          Text="{Binding Path=City, 
             Mode=TwoWay, 
             UpdateSourceTrigger=PropertyChanged}"> 
     <controls:AutoCompleteBox.TextBoxStyle> 
      <Style BasedOn="{StaticResource {x:Type TextBox}}" TargetType="{x:Type TextBox}"> 
      <Setter Property="MaxLength" Value="100" /> 
      <Setter Property="TabIndex" Value="1" /> 
      </Style> 
     </controls:AutoCompleteBox.TextBoxStyle> 
     <controls:AutoCompleteBox.BorderBrush> 
      <LinearGradientBrush MappingMode="Absolute" StartPoint="0,0" EndPoint="0,20"> 
      <GradientStop Offset="0.05" Color="#ABADB3" /> 
      <GradientStop Offset="0.07" Color="#E2E3EA" /> 
      <GradientStop Offset="1" Color="#E3E9EF" /> 
      </LinearGradientBrush> 
     </controls:AutoCompleteBox.BorderBrush> 
     </controls:AutoCompleteBox> 
+0

謝謝,這是幫助我的答案。必須在自動完成框上包含的文本框控件上設置TabIndex和IsTabStop屬性。如果在AutoCompleteBox上完成,它會被忽略,或導致控件被「聚焦」,但焦點不在允許輸入文本的部分。 – Tofystedeth