2017-06-24 2 views
0

für die zweite Zeile des inneren Grid sollte ich seine Height explizit festlegen, und wenn ich es auf Auto setzen die zweite und dritte Zeilen übereinander gestapelt (wird die gleiche Zeile füllen, auch wenn die anderen Grid.Row Werte haben):Einstellung Grid.Row um automatisch zwei Reihen übereinander zu stapeln?

<Window x:Class="Notifications.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:Notifications" 
     mc:Ignorable="d" 
     Title="Fun with Notifications!" Height="225" Width="325" WindowStartupLocation="CenterOwner"> 
    <Grid IsSharedSizeScope="True" Margin="5,0,5,5"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" SharedSizeGroup="CarLabels"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Label Grid.Column="0" Content="Vehicle"/> 
      <ComboBox Name="cboCars" Grid.Column="1" DisplayMemberPath="PetName" /> 
     </Grid> 
     <Grid Grid.Row="1" DataContext="{Binding ElementName=cboCars, Path=SelectedItem}"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" SharedSizeGroup="CarLabels"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="30"/> <!--If set to auto, it will stack over the next row--> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 
      <Label Grid.Column="0" Grid.Row="0" Content="Id"/> 
      <TextBox Grid.Column="1" Grid.Row="0" Text="{Binding Path=CarId}" /> 

      <Label Grid.Column="0" Grid.Row="1" Content="Make" Grid.RowSpan="2"/> 
      <TextBox Grid.Column="1" Grid.Row="1" Text="{Binding Path=Make}" Grid.RowSpan="2" /> 

      <Label Grid.Column="0" Grid.Row="2" Content="Color"/> 
      <TextBox Grid.Column="1" Grid.Row="2" Text="{Binding Path=Color, UpdateSourceTrigger=PropertyChanged}"/> 

      <Label Grid.Column="0" Grid.Row="3" Content="Pet Name"/> 
      <TextBox Grid.Column="1" Grid.Row="3" Text="{Binding Path=PetName}"/> 

      <StackPanel Grid.Column="1" Grid.Row="4" HorizontalAlignment="Right" Orientation="Horizontal" Margin="0,5,0,5"> 
       <Button x:Name="btnAddCar" Content="Add Car" Margin="5,0,5,0" Padding="4, 2" Click="btnAddCar_Click"/> 
       <Button x:Name="btnChangeColor" Content="Change Color" Margin="5,0,5,0" Padding="4, 2" Click="btnChangeColor_Click"/> 
       <Button x:Name="btnRemoveCar" Content="Remove Car" Margin="5,0,5,0" Padding="4,2" Click="btnRemoveCar_Click"/> 
      </StackPanel> 
      <Label Grid.Column="0" Grid.Row="5" Content="Is Changed"/> 
      <CheckBox Grid.Column="1" Grid.Row="5" VerticalAlignment="Center" Margin="10,5,0,5" IsEnabled="False" IsChecked="{Binding Path=IsChanged}" /> 
     </Grid> 
    </Grid> 
</Window> 

http://i.imgur.com/hcbVBb5.png

Antwort

0

entfernen Grid.RowSpan = "2" für das Make-Aufkleber und Textbox. Dadurch wird es in der folgenden Zeile ausgeführt.

Es sollte so aussehen:

<Label Grid.Column="0" Grid.Row="1" Content="Make"/> 
    <TextBox Grid.Column="1" Grid.Row="1" Text="{Binding Path=Make}"/> 
Verwandte Themen