2012-01-31 7 views
0

この簡単な例では、の直下に5 GroupBoxがあります。私は1列と5行を宣言して縦に積み重ねるようにしています。私はStackPanelを使用しませんでした。後でこれらのグループボックスをインテリジェントにサイズ調整できるようにしたいのですが(最後のGroupBoxが残りのスペースを占めるように、最初の4つのサイズを最小サイズにしたいと思います) 。グリッドレイアウトでグループボックスが正しく表示されない

以下に示すように、すべてが同じ「セル」に表示されます。しかし、Blend 4のデザイナーモードでは、私のグリッドが5個のセル(空の4個)を表示しているようです...行と列の宣言を削除しても何も変わりません。

Example

<UserControl 
    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" 
    mc:Ignorable="d" 
    x:Class="WpfControlLibrary1.MainControl" 
    x:Name="MultiVol" MinHeight="520.12"> 

    <Grid> 
     <Grid.Background> 
       <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0"> 
        <GradientStop Color="White" Offset="0.966"/> 
        <GradientStop Color="#FFD7D4FF"/> 
       </LinearGradientBrush> 
     </Grid.Background> 

     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition /> 
      <RowDefinition /> 
      <RowDefinition /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 

     <GroupBox Margin="8,0" BorderBrush="#FF88B1D8"> 
      <GroupBox.Header> 
       <WrapPanel> 
       <Label Content="General" Background="#00000000" Foreground="#FF0033FF" FontWeight="Bold" FontFamily="/WpfControlLibrary1;component/Fonts/#Tahoma" />  
       </WrapPanel> 
      </GroupBox.Header> 

      <UniformGrid Columns="2"> 
       <Label Content="RICs" /> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
       <Label Content="Preference" /> 
       <UniformGrid VerticalAlignment="Center" Columns="2" Rows="1"> 
        <RadioButton GroupName="preference" Content="Exotic" IsChecked="False" /> 
        <RadioButton GroupName="preference" Content="Flow" IsChecked="True" /> 
       </UniformGrid> 
       <Label Content="Live updates" /> 
       <CheckBox IsChecked="False" VerticalAlignment="Center"/> 
      </UniformGrid> 
     </GroupBox> 

     <GroupBox Margin="8,0" BorderBrush="#FF88B1D8"> 
      <GroupBox.Header> 
       <WrapPanel> 
       <CheckBox IsChecked="True" VerticalAlignment="Center" /> 
       <Label Content="Volatility" Background="#00000000" Foreground="#FF0033FF" FontWeight="Bold" FontFamily="/WpfControlLibrary1;component/Fonts/#Tahoma" /> 
       </WrapPanel> 
      </GroupBox.Header> 
      <UniformGrid Columns="2"> 
       <Label Content="Spots"></Label> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
       <Label Content="Hist. references" /> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
       <Label Content="Tenors" /> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
      </UniformGrid> 
     </GroupBox> 

     <GroupBox Margin="8,0" BorderBrush="#FF88B1D8"> 
      <GroupBox.Header> 
       <WrapPanel> 
       <CheckBox IsChecked="True" VerticalAlignment="Center" /> 
       <Label Content="Skew" Background="#00000000" Foreground="#FF0033FF" FontWeight="Bold" FontFamily="/WpfControlLibrary1;component/Fonts/#Tahoma" /> 
       </WrapPanel> 
      </GroupBox.Header> 
      <UniformGrid Columns="2"> 
       <Label Content="Spot Intervals"></Label> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
       <Label Content="Hist. references" /> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
       <Label Content="Tenors" /> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
       <Label Content="Compute 'Power'" /> 
       <CheckBox IsChecked="False" VerticalAlignment="Center"/> 
      </UniformGrid> 
     </GroupBox> 

     <GroupBox Margin="8,0" BorderBrush="#FF88B1D8"> 
      <GroupBox.Header> 
       <WrapPanel> 
       <CheckBox IsChecked="True" VerticalAlignment="Center" /> 
       <Label Content="Term structure" Background="#00000000" Foreground="#FF0033FF" FontWeight="Bold" FontFamily="/WpfControlLibrary1;component/Fonts/#Tahoma" /> 
       </WrapPanel> 
      </GroupBox.Header> 
      <UniformGrid Columns="2"> 
       <Label Content="Spots" /> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
       <Label Content="Tenors" /> 
       <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" /> 
      </UniformGrid> 
     </GroupBox> 

     <GroupBox Margin="8,0" BorderBrush="#FF88B1D8"> 
      <GroupBox.Header> 
       <WrapPanel> 
       <Label Content="Live updates" Background="#00000000" Foreground="#FF0033FF" FontWeight="Bold" FontFamily="/WpfControlLibrary1;component/Fonts/#Tahoma" /> 
       </WrapPanel> 
      </GroupBox.Header> 
      <ListView MinHeight="100" Background="{x:Null}"> 
       <ListView.View> 
        <GridView AllowsColumnReorder="False"> 
         <GridViewColumn Header="RIC" /> 
         <GridViewColumn Header="Last tick" /> 
        </GridView> 
       </ListView.View> 
      </ListView> 
     </GroupBox>   
    </Grid> 
</UserControl> 

答えて

1

あなたGroupBoxコントロールのGrid.Rowプロパティを指定する必要があります。 Gridはそれらを自動的には整列しません。画像では、すべてのコントロールが最初のグリッド行に表示されます。各GroupBoxに添付のプロパティGrid.Row="0"を追加して行を指定します。行インデックスはゼロベースであることに注意してください。

最後の行が残りのスペースを埋めるようにしたい場合は、RowDefinitionの残りの部分に特定の高さを設定するか、すべてをauto(Height="auto"を使用)に設定します。後者を使用すると、各行が内容に合わせてサイズ変更されます。最後のRowDefinitionを明示的な高さが設定されていないものとして残しておくと、残っている空き領域が伸びていってしまいます。現在、あなたのRowDefinitionのどれも高さが設定されていないので、それらはすべて利用可能なスペース内で均等にサイズ調整されます。

Hereは、Gridコントロールのレイアウトの仕組みを説明するチュートリアルです。

関連する問題