我在 ItemsControl 的 DataTemplate 中设置了一个 DockPanel,如下所示:
<ItemsControl HorizontalContentAlignment="Stretch">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel>
<ComboBox DockPanel.Dock="Left"/>
<ComboBox DockPanel.Dock="Left"/>
<Button DockPanel.Dock="Right">Button</Button>
<!-- This will appear before the button...it has to go after it in the XAML so it will fill properly in the DockPanel -->
<TextBox DockPanel.Dock="Left" MinWidth="100" HorizontalAlignment="Stretch"/>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我希望文本框填充组合框和按钮之间的所有剩余空间。我不得不将文本框放在 XAML 中的最后,因为 DockPanel 只会填充最后一个子元素。看起来不错; 但是,标签顺序现在搞砸了。它现在选项卡组合框组合框按钮文本框而不是组合框组合框文本框按钮。
我尝试KeyboardNavigation.TabIndex
在每个项目上使用属性,但由于这是 ItemsControl 的 DataTemplate(每个停靠面板都将用于一个单独的项目),这使得选项卡顺序垂直向下跳到每个项目的组合框,然后垂直向下跳到每个文本框,然后垂直向下每个按钮,而不是遍历每一行,然后向下的期望行为。
示例用户界面:
[Combo11] [Combo12] [Text1] [Button1]
[Combo21] [Combo22] [Text2] [Button2]
在目前的情况下,它去Combo11,Combo12,Button1,Text1,Combo21,Combo22,Button2,Text2
。如果我添加 TabOrder 属性,它将变为Combo11,Combo21,Combo12,Combo22,Text1,Text2,Button1,Button2
.
我想去Combo11,Combo12,Text1,Button1,Combo21,Combo22,Text2,Button2
。
有人对如何解决这个 UI 问题有任何想法吗?