代码之家  ›  专栏  ›  技术社区  ›  Peter Morris

复合控件中的WPF TabIndex

  •  4
  • Peter Morris  · 技术社区  · 16 年前

    <Window x:Class="TabOrder.Window1"
    xmlns:local="clr-namespace:TabOrder"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Label HorizontalAlignment="Left" VerticalAlignment="Top">First</Label>
        <TextBox TabIndex="0" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="80,0,0,0"/>
    
        <Label HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,30,0,0">Second</Label>
        <TextBox TabIndex="1" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="80,30,0,0"/>
    
        <local:MyControl Margin="0,60,0,0" VerticalAlignment="Top" HorizontalAlignment="Stretch" TabIndex="2"/>
    </Grid>
    

    (复合控制)

    <UserControl x:Class="TabOrder.MyControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Label HorizontalAlignment="Left" VerticalAlignment="Top">Third</Label>
        <TextBox HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="80,0,0,0"/>
    
        <Label HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,30,0,0">Fourth</Label>
        <TextBox HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="80,30,0,0"/>
    </Grid>
    

    • 第一
    • 第三

    但当“第一个”有焦点时,我点击tab键,焦点就会切换到“第三个”。WPF似乎将选项卡列表视为一个单一的平面列表,而不是一个树,其中MyControl是TabIndex 3,文本框“Third”是其中的第一个选项卡控件。

    这是WPF中的一个bug还是有其他方法可以做到这一点?复合控件用于许多窗口,甚至可以在单个窗口上使用多次。

    1 回复  |  直到 16 年前
        1
  •  13
  •   Scott    15 年前

    我知道这个反应已经很晚了。。。但你有没有试过:

    <UserControl ... KeyboardNavigation.TabNavigation="Local">
    

    这样做将确保一旦您的UserControl接收到焦点,您将只在UserControl中的TabStop中导航(而不是在整个应用程序中担心TabIndex值冲突)。在通过UserControl的TabStop循环之后,TabNavigation将恢复到其外部的TabStop。

    http://msdn.microsoft.com/en-us/library/system.windows.input.keyboardnavigationmode.aspx

    推荐文章