代码之家  ›  专栏  ›  技术社区  ›  Adam

WPF:ListBox itemtemplate通过项进行标记导航

wpf
  •  0
  • Adam  · 技术社区  · 16 年前

    我有一个列表框,它有一个包含多个文本框的datatemplate。我希望用户能够通过所有文本框,然后到下一个列表项的文本框,而不必使用CTRL+tab键。

    一些XAML:

    
    <DataTemplate x:Key="UsersDataTemplate">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <StackPanel  Orientation="Horizontal" Grid.Column="0" Grid.Row="0">
                <Label Content="Full Name" />
                <TextBox Text="{Binding Path=FullName}" />
            </StackPanel>
            <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="0">
                <Label Content="Address"  />
                <TextBox Text="{Binding Path=Address}" />
            </StackPanel>
            <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1">
                <Label Content="City" />
                <TextBox Text="{Binding Path=City}" />
            </StackPanel>
            <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="0">
                <Label Content="State" />
                <TextBox Text="{Binding Path=State}" />
            </StackPanel>
            <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="1">
                <Label Content="Zip" />
                <TextBox Text="{Binding Path=Zip}" />
            </StackPanel>
        </Grid>
    </DataTemplate>
    
    <ListBox  ItemTemplate="{DynamicResource UsersDataTemplate}"
        ItemsSource="{Binding ElementName=MyUserControl, Path=Users}"
        Width="914"
        Margin="2,2,2,2" />
    

    这样做的目的是,用户可以在这个列表框中看到1到10个用户,他们希望能够在列表框中添加标签,编辑/更新名称;地址,并继续通过所有10个用户的标签。我遇到的问题是,当用户到达最后一个textbox(zip)并点击tab时,focus会完全离开listbox。

    我知道这与CTRL+TAB一起工作,但这对于用户体验来说是不可接受的。有没有办法让列表框用tab键而不是CTRL+tab键通过它的项进行制表呢?

    有什么想法吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   hkon    16 年前

    你好,我测试了向listbox声明添加以下代码

    <ListBox  
    KeyboardNavigation.TabNavigation="Continue"
    

    工作就像一个魅力;D