18 Stimmen

DockPanel Registerkartenreihenfolge

Ich habe ein DockPanel in der DataTemplate eines ItemsControl wie unten eingerichtet:

<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 möchte, dass das Textfeld den gesamten verbleibenden Platz zwischen den Comboboxen und der Schaltfläche ausfüllt. Ich musste das Textfeld als letztes in die XAML einfügen, weil DockPanel nur das letzte untergeordnete Element ausfüllt. Es sieht toll aus, aber die Tabulatorreihenfolge ist jetzt durcheinander. Es werden jetzt die Tabs combobox-combobox-button-textbox anstelle von combobox-combobox-textbox-button angezeigt.

Ich habe es mit KeyboardNavigation.TabIndex Eigenschaften für jedes Element, aber da dies ein DataTemplate für ein ItemsControl ist (jedes dieser dockpanels wird für ein separates Element sein), dass die Tabulator-Reihenfolge vertikal nach unten jedes der Elemente Comboboxen springen, dann vertikal nach unten jedes Textfeld, dann vertikal nach unten jede Schaltfläche, anstatt das gewünschte Verhalten von gehen über jede Zeile, dann nach unten gemacht.

Beispiel UI:

[Combo11] [Combo12] [Text1] [Button1]
[Combo21] [Combo22] [Text2] [Button2]

Nach dem derzeitigen Stand der Dinge heißt es 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, dass es geht Combo11,Combo12,Text1,Button1,Combo21,Combo22,Text2,Button2 .

Hat jemand eine Idee, wie man dieses UI-Problem lösen kann?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X