2010-07-20 5 views
7

Ich hätte gerne ein Raster mit einer Reihe auf der Oberseite und Unterseite mit entweder Etiketten oder Schaltflächen in ihnen. In der Mitte plane ich eine ListBox zu verwenden. Ich möchte, dass die ListBox erweitert wird, um den gesamten verfügbaren Speicherplatz zu verwenden. Es wäre schön, die Höhe der anderen zwei Zeilen nicht fest zu codieren. Mein XAML ist unten. Wie kann ich den mittleren Bereich automatisch erweitern? Vielen Dank.WPF Grid Layout Panel mit Zeilenhöhe auf "Auto"

<UserControl x:Class="WpfApplication1.UserControl1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 

    <Label Grid.Row="0" 
      Grid.ColumnSpan="3" 
      Content="Top Row" /> 

    <ListBox Grid.Row="1" 
      Grid.ColumnSpan="3" /> 

    <Label Grid.Row="2" 
      Grid.ColumnSpan="3" 
      Content="Bottom Row" /> 
</Grid> 

Antwort

11

Versuchen Sie, die mittlere Reihe zu dieser Einstellung ...

<RowDefinition Height="*" /> 
+0

Vielen Dank. Sehr hilfreich. – Nate

+1

@Nate. "*" Verknüpfungen sind noch ausgefeilter als diese. Sie brauchen in diesem Beispiel nichts mehr, aber wenn Sie ein komplexes Raster haben, in dem Sie mehrere Zeilen oder Spalten benötigen, um in unterschiedlichen Proportionen zu expandieren, haben Sie möglicherweise "2 *" für eins und "5 *" für ein anderes. Wenn Sie beide bei "*" belassen (was eine Abkürzung ist, um 1 * zu sagen), dann würden die zwei Zeilen den erweiterten Raum zwischen sich gleichmäßig teilen. Prost – Berryl

+0

Danke Berryl. Das ist sehr interessant. – Nate

3

Ersetzen Sie die mittlere

<RowDefinition Height="Auto" /> 

mit

<RowDefinition Height="*" />