2016-04-20 8 views
0

Ich habe ein DockPanel, ein Label mit einer festen Breite und ein TextBox mit einem Min und MaxWidth enthält. Ich möchte die TextBox nach links ausrichten und haben es bis zu seiner MaxWidth strecken und sie haben schrumpfen, bis seine MinWidth (wenn das Fenster zum Beispiel der Größe verändert wird) wie folgt aus:Ausrichten Links und füllen Raum in DockPanel

enter image description here

Panel:

<DockPanel LastChildFill="True"> 
    <Label Content="Fixed Width" DockPanel.Dock="Left" /> 
    <TextBox MinWidth="80" MaxWidth="250" DockPanel.Dock="Left" HorizontalAlignment="Left" /> 
</DockPanel> 

Allerdings richtet dies nur die TextBox auf der linken Seite aus. Wenn ich die HorizontalAlignment weglasse, zentriert sie sich. Wie kann ich etwas wie auf dem Screenshot erreichen?

Bitte beachten Sie, dass ich kein Raster verwenden möchte, da ich die TextBox an einem bestimmten Punkt unterhalb des Labels umbrechen muss (ich werde dies tun, indem ein Trigger die Dock-Eigenschaft ändert).

Antwort

1

Werfen Sie einen Blick auf diese Lösung: https://stackoverflow.com/a/13040678/4625433

Sie müssen die MinWidth="80" aus dem Text zum LeftStretchPanel bewegen.

<ScrollViewer HorizontalScrollBarVisibility="Auto"> 
    <DockPanel LastChildFill="True" Background="Yellow"> 
     <Label Content="Fixed Width" Background="Red" /> 
     <local:LeftStretchPanel MinWidth="80"> 
      <TextBox MaxWidth="250" Background="Blue" /> 
     </local:LeftStretchPanel> 
    </DockPanel> 
</ScrollViewer> 
+0

Dies funktioniert, aber nur mit dem ScrollViewer herum. Wenn ich es auslasse, funktioniert das Andocken der Textbox nicht mehr, weil das Panel eine 0 Höhe für die TextBox zu berechnen scheint. – Lennart

+0

Auch ohne '' wenn ich nur die Docking-Position von TextBox ändere passiert nichts. Haben Sie beide Docking geändert? Wenn Sie dennoch Hilfe benötigen, können Sie ein kurzes Beispiel mit mir teilen, mit dem ich arbeiten kann? –