WPF Dockpanel erstes Kind verwendet den verbleibenden Speicherplatz

In einem Fenster, das ich habe, gibt es eine Liste vonDockPanels, um einige Dateien anzugeben. Jedes DockPanel verfügt über eine TextBox (für den Pfad) und eine Schaltfläche (zum Suchen nach einer Datei).

Ich habe eine einfache WPF-Seite neu erstellt, um das Problem hier zu demostrieren:

<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="150"
    Height="22">
    <DockPanel>
        <TextBox HorizontalAlignment="Stretch"/> <!-- path to file -->
        <Button Content="..." DockPanel.Dock="Right"/> <!-- button to browse for file -->
    </DockPanel>
</Page>

Das Problem ist, dass ich die Schaltfläche rechts neben dem Textfeld haben möchte, aber das führt dazu, dass das Textfeld sehr klein ist, da LastChild des DockPanels die Schaltfläche ist, die den verbleibenden Platz belegt. Ich habe versucht, dies zu ändern, indem ich sie herumgemischt und @ gesetzt habLastChildFill="False", aber das führt nur dazu, dass die Schaltfläche wieder klein ist und die TextBox nicht breiter wird (auch beiHorizontalAlignment="Stretch").

Der Grund, warum ich die Steuerelemente in dieser Reihenfolge haben möchte, ist, dass der Benutzer bei Verwendung von @ die TextBox vor dem Button erreichen soltab, um im Fenster zu navigieren. Ich habe mir das Setting @ angeschaTabIndex aber es fühlt sich komisch an. Die beliebtesten Features von WPF sind, dass die Tab-Indizes in der Reihenfolge sind, in der die Steuerelemente in der XAML definiert sind. Ganz zu schweigen davon, dass ich wahrscheinlich TabIndex für alles im Fenster manuell einstellen müsste.

Für mich scheint die Einstellung von TextBox.HorizontalAlignment nicht beachtet zu werden.Wie kann ich dafür sorgen, dass das erste Steuerelement so viel Speicherplatz wie möglich verwendet, aber die Tabulatorreihenfolge beibehalten?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage