WPF Tabindexes表现不尽如人意 - 力量很弱

时间:2010-10-15 06:30:05

标签: wpf user-interface wpf-controls focus

我有一个带有各种控件的WPF窗口/表单。

我已将tabindexes设置为所需的顺序,但我的行为很奇怪。

当浏览窗口时,顺序应如下所示:左边的第一个文本框,然后是右边的日期控件,然后是我的标签控件和标签页,然后只有按钮。

但是跳过了标签控件,焦点直接转移到按钮上。如果我在按钮后继续选项卡,则选择标签控件。

以下是xmal。

感谢任何帮助。

    <Window xmlns:my="clr-namespace:DevExpress.Xpf.Editors;assembly=DevExpress.Xpf.Core.v10.1"  x:Class="TabStopIssue.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
  xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
        Title="MainWindow" Height="350" Width="525">
  <Grid>
    <Grid >
      <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
      </Grid.RowDefinitions>
      <Grid Grid.Row="0">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="2*"/>
          <ColumnDefinition Width="2*"/>
          <ColumnDefinition Width="3*" />
          <ColumnDefinition Width="3*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
          <RowDefinition />
          <RowDefinition />
          <RowDefinition />
          <RowDefinition />
        </Grid.RowDefinitions>


        <Label Grid.Row="1" Grid.Column="0" Content="Name"/>
        <dxe:ComboBoxEdit Grid.Row="1" Grid.Column="1"  Text="" TabIndex="0" />

        <Label Grid.Row="2" Grid.Column="0" Content="Description"/>
        <dxe:TextEdit Grid.Row="2" Grid.Column="1" TabIndex="1" />

        <Label Grid.Row="1" Grid.Column="2" Content="From Date"/>
        <dxe:DateEdit Grid.Row="1" Grid.Column="3" TabIndex="2" />

        <Label Grid.Row="2" Grid.Column="2" Content="ToDate"/>
        <dxe:DateEdit Grid.Row="2" Grid.Column="3" TabIndex="3" />
      </Grid>
      <Grid Grid.Row="1">
        <TabControl TabIndex="4">
          <TabItem Header="Tab1" TabIndex="5">
            <Grid >
              <TextBox>Enter Text Here</TextBox>
            </Grid>
          </TabItem>

          <TabItem Header="Tab2" TabIndex="6">
            <Grid >
              <TextBox>Enter Text Here</TextBox>
            </Grid>
          </TabItem>

          <TabItem Header="tab3" TabIndex="7">
            <Grid >
              <TextBox>Enter Text Here</TextBox>
            </Grid>
          </TabItem>

          <TabItem Header="tab4" TabIndex="8">
            <Grid >
              <TextBox>Enter Text Here</TextBox>
            </Grid>
          </TabItem>

          <TabItem Header="tab5" TabIndex="9">
            <Grid >
              <TextBox>Enter Text Here</TextBox>
            </Grid>
          </TabItem>
        </TabControl>
      </Grid>
      <Grid Grid.Row="2">
        <StackPanel HorizontalAlignment="Right">
          <Button  Content="Button1" IsDefault="True" TabIndex="10" />
          <Button  Content="Button2" TabIndex="11" />
          <Button Content="button3" IsCancel="True" TabIndex="12" />
        </StackPanel>
      </Grid>
    </Grid>
  </Grid>
</Window>

1 个答案:

答案 0 :(得分:4)

要使TabControl显示在Tab键顺序中的正确位置,请修改TabControl元素,如下所示:

<TabControl TabIndex="4" KeyboardNavigation.TabNavigation="Local">

据我所知,您不能使用Tab键来Tab Tabtrol上的各个标签。标准窗口行为是使用箭头键。