我有一个关于 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