In einem Fenster habe ich eine Liste von DockPanel
s, um ein paar Dateien anzugeben. Jedes DockPanel hat eine TextBox (für den Pfad) und eine Schaltfläche (um nach einer Datei zu suchen).WPF Dockpanel erstes Kind verwendet verbleibenden Platz
ich eine einfache WPF Seite neu erstellt habe, das Problem hier verdeutlichen soll:
<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 auf die Schaltfläche rechts neben der Textbox will, aber das bewirkt, dass die Textbox wirklich klein sein, da Das LastChild des DockPanel ist die Schaltfläche, die den verbleibenden Speicherplatz belegt. Ich habe versucht, dies zu ändern, indem Sie sie mischen und LastChildFill="False"
setzen, aber das bewirkt nur, dass die Schaltfläche wieder klein ist, die TextBox nicht breit (selbst mit HorizontalAlignment="Stretch"
).
Der Grund, warum ich die Steuerelemente in dieser Reihenfolge möchte, ist, dass ich möchte, dass der Benutzer die TextBox vor der Schaltfläche erreicht, wenn Sie tab
verwenden, um im Fenster zu navigieren. Ich schaute in Einstellung TabIndex
, aber es fühlt sich hacky, Lieblingsfeatures von WPF ist, dass Tabindex in der Reihenfolge sind, die die Conrols im XAML definiert sind. Ganz zu schweigen davon, dass ich wahrscheinlich TabIndex für alles im Fenster manuell setzen müsste.
Mir scheint, dass die Einstellung von TextBox.HorizontalAlignment nicht respektiert wird. Wie kann ich die erste Steuerung so viel Platz wie möglich verwenden, aber die Tab-Reihenfolge beibehalten?
+1, weil es nicht TabOrder Problem hat. Wenn jemand vermeiden möchte, ColumnDefinitions in solchen einfachen Szenarien einzugeben, werfen Sie einen Blick auf diese Lösung: http://rachel53461.wordpress.com/2011/09/17/wpf-grids-rowcolumn-count-properties/ – surfen