Ich habe ein DockPanel in der Datatemplate eines Items aufgebaut wie folgt:DockPanel Tab-Reihenfolge
<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>
ich die Textbox wollen alle den verbleibenden Platz zwischen den Comboboxen und die Schaltfläche füllen. Ich musste das Textfeld zuletzt im XAML platzieren, da DockPanel nur das letzte Kind füllt. Das sieht großartig aus; Allerdings ist die Tab-Reihenfolge jetzt vermasselt. Es gibt jetzt tabs combobox-combobox-button-textbox statt combobox-combobox-textbox-button.
Ich habe versucht, KeyboardNavigation.TabIndex
Eigenschaften für jeden Artikel zu verwenden, aber da dies eine DataTemplate für ein ItemsControl ist (jeder dieser Dockpanels wird für einen separaten Artikel sein), die Tabulatorreihenfolge vertikal nach unten jeder Combobox der Artikel springen, dann vertikal nach unten in jedem Textfeld, dann vertikal nach unten auf jeden Knopf, anstatt das gewünschte Verhalten über jede Reihe zu gehen, dann nach unten.
Beispiel UI:
[Combo11] [Combo12] [Text1] [Button1]
[Combo21] [Combo22] [Text2] [Button2]
Im aktuellen Stand der Dinge, es geht Combo11,Combo12,Button1,Text1,Combo21,Combo22,Button2,Text2
. Wenn ich TabOrder Eigenschaften hinzufüge, geht es Combo11,Combo21,Combo12,Combo22,Text1,Text2,Button1,Button2
.
Ich möchte es gehen Combo11,Combo12,Text1,Button1,Combo21,Combo22,Text2,Button2
.
Hat jemand irgendwelche Ideen, wie man dieses UI-Problem lösen kann?
Das hat wirklich gut funktioniert ... und ich muss fragen, warum hat die erste Combobox keine Spaltennummer? Bedeutet das, dass es Spalte 0 automatisch zugewiesen wird? Und vielen Dank für den SharedSizeGroup-Tipp - ich hätte keine Ahnung, was ich überhaupt suchen soll! (Sie haben vergessen/in Grid.ColumnDefinitions>) – NickAldwin
Es könnte eine Grid.Column = "0" haben - aber 0 ist der Standardwert - und ich bin faul :-). Ja, SharedSizeGroup ist eine Art verstecktes Juwel. Ich habe mein Beispiel für andere aktualisiert. – Goblin
Bah, konnte die SharedSizeGroup nicht ordnungsgemäß funktionieren - wahrscheinlich wegen der Sterngröße in der dritten Spalte. :( – NickAldwin