【发布时间】:2020-05-11 10:00:48
【问题描述】:
我有如下自定义控件。当按下 tab 键时焦点将在 order 元素排列中移动。
查询:
当 stackpanel 收到选项卡焦点时,我需要更改 stackpanel 中存在的默认选项卡顺序切换按钮
默认标签顺序:
DockPanel--Border---StackPanel-->Button1-->button2-->button3
预期顺序
DockPanel--Border---StackPanel-->Button3-->button2-->button1
我需要根据其父项更新 TabOrder。请建议解决方案根据父项修改标签顺序
注意:我需要像下面这样的 UI,只需要修改按钮的 tab 顺序
<DockPanel VerticalAlignment="Center" HorizontalAlignment="Center">
<Border x:Name="MainBorder">
<StackPanel>
<ToggleButton>Button 1</ToggleButton>
<ToggleButton>Button 3</ToggleButton>
<ToggleButton>Button 3</ToggleButton>
</StackPanel>
</Border>
</DockPanel>
【问题讨论】:
-
“根据父级更改订单”是什么意思?
-
StackPanel应该支持编辑Children集合,您应该能够通过删除所有子元素然后按所需顺序重新插入子元素来修改子 UI 元素的顺序,就像重新排序元素时你会在列表中做 -
使用自定义面板,您可以这样做,覆盖 ArrangeOverride 并修改顺序.. 在 stackpanel 中,获取子项,从可视树中删除它们并将其添加到所需的索引中
-
我的意思是我不知道子元素的现有选项卡索引,因为选项卡索引是根据排列分配的,但是当 stackpanel 接收焦点时,我需要像 3,2,1 一样更新选项卡顺序, 用于堆栈面板内的按钮
-
@zafar 我希望 UI 仅处于现有顺序,但我需要仅根据我的要求更新 Tab 焦点顺序。
标签: c# wpf tabs custom-controls