2012-09-01 6 views
6

Ich habe eine Menge Beispielcode dafür durchgesprochen und am Ende entschieden, das zu fragen: Ich habe ein Gitter, das einen Knopf mit fester Position und ein anderes Gitter darin hat. Das äußere Gitter hat keine Breite/Höhe. Es sollte sich entsprechend der Bildschirmauflösung ändern. I gesetzt W/H des Fensters als:Holen Sie die mittlere Reihe des Gitters, um den verfügbaren Platz zu füllen

Width = 200; 
Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height - 5; 

innerhalb des inneren Gitters i 3 Reihen haben, die oberen eine Taste (Höhe auto) ist, ist die mittlere eine Listenansicht, deren Höhe variieren kann (und welches um den verfügbaren Platz zu füllen) und die letzte Zeile besteht aus einem Textfeld, das immer am unteren Rand des Fensters bleiben soll. Die XAML für das heißt unter:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Click="Button_Click" Width="32" Height="32" FontSize="16" VerticalAlignment="Center" 
      HorizontalAlignment="Left" FontWeight="Bold" ToolTip="Click here to hide the Sidebar">&gt;</Button> 
<Grid VerticalAlignment="Top" Background="Transparent" Grid.Row="1"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <!-- This is the settings bar--> 
      <RowDefinition Height="*" /> 
      <!-- This will contain the listbox--> 
      <RowDefinition Height="Auto" /> 
      <!-- This is to maintain vertical arrangement and future use--> 
     </Grid.RowDefinitions> 

     <Button Content="hello" Grid.Row="0" /> 
     <ListView x:Name="lstView" Background="Transparent" Grid.Row="1"/> 
     <TextBox TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" Height="50" Margin="2" BorderBrush="Black" Grid.Row="2" />` 

Aber ich kann nicht bekommen nur die mittlere Reihe den gesamten Raum zu füllen und das Textfeld am unteren Rand des Bildschirms ausgerichtet. Kann jemand vorschlagen, wie die Textbox auf die untere und die mittlere Zeile ausgerichtet wird, um die gesamte verbleibende Höhe aufzufüllen? Wie kann ich dies erreichen, ohne Höhen ausdrücklich festzulegen, während die Anzeigemodi geändert werden?

+1

Die 'RowDefinition's, die Sie haben, werden in der Tat die zweite Zeile das restliche Leerzeichen * in diesem' Grid' * aufnehmen lassen. Jetzt müssen Sie sich ihren Elternteil ansehen und sicherstellen, dass der Elternteil dieses "Gitter" das gesamte Fenster ausfüllen lässt. Ich sehe ein 'Grid.Row' auf Ihrem' Grid', also ist das Elternteil wahrscheinlich ein anderes 'Grid'; Wie sehen * seine * RowDefinition's aus? –

+0

Ich habe keine Gitternetzdefinition in diesem Gitter hinzugefügt, ich benutze es einfach, um einen festen Knopf in der Mitte des Fensters hinzuzufügen .... keine andere Verwendung ... – Dannyboy

Antwort

0

Wenn Sie nicht über die Grid sagen alle verfügbaren Platz nehmen sie es nicht verteilen können, sollten Sie vielleicht die VerticalAlignment des Grid zu Stetch gesetzt.

+0

hey .... ich habe das schon mal versucht, aber es ist passiert nicht funktionieren, es gab keine Änderung in UI ... – Dannyboy

Verwandte Themen