1

我有一个关于 WPF 中动态加载控件的选项卡顺序的问题。

我有一个列表框:

<ListBox ItemsSource="{Binding Path=MyData,Mode=TwoWay}">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel></StackPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

我在堆栈面板中添加了一对 TextBlock-Textbox 对(名称-值对)作为 ListItem。当我选项卡时,跳过所有项目,然后我退出 ListBox 项目。

解决方案:但是,如果我将以下内容添加到 ListBox 一切正常:

KeyboardNavigation.TabNavigation="Local"

现在,如果我使用 ItemsControl 代替 ListBox,我不必使用本地导航,它可以正常工作 OOTB。我的 ItemsControl 看起来像这样:

<ItemsControl ItemsSource="{Binding Path=MyData,Mode=TwoWay}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel></StackPanel>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

问题:为什么这两种行为不同?

谢谢, RDV

<<<<<<<<<<<<< 完整的XAML代码<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<

<ItemsControl HorizontalContentAlignment="Center"
              HorizontalAlignment="Center"
              ItemsSource="{Binding Mydata}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
           <StackPanel/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
               <Grid.ColumnDefinitions>
                 <ColumnDefinition/>
                 <ColumnDefinition/>
               </Grid.ColumnDefinitions>

               <Border Background="LightBlue">
                  <TextBlock Grid.Column="0"
                             HorizontalAlignment="Center" 
                             VerticalAlignment="Center"
                             Text="{Binding Name}"/>
               </Border>
               <TextBox  Grid.Column="1"
                         Text="{Binding Value}"
                         HorizontalAlignment="Stretch"
                         VerticalContentAlignment="Center"
                         HorizontalContentAlignment="Center"/>
             </Grid>
            </DataTemplate>
           </ItemsControl.ItemTemplate>
          </ItemsControl>

从 ViewModel 在 MyData 变量中添加一些数据。

只需将 ItemsControl 更改为 ListBox 即可查看选项卡行为的变化。如果您无法通过 ListBox 中的项目(我面临的问题)进行选项卡,请添加到 ListBox 控件:

 KeyboardNavigation.TabNavigation="Local"

谢谢, RDV

4

0 回答 0