2010-11-23 8 views
1

私はSL 4アプリを構築しています。 UIは、3つの主要な部分で構成されています。上部の検索バー、下部のお気に入りバー、および2つの間のページコンテンツです。私は、ページのコンテンツがすべての利用可能な領域を占めるようにしたいと思います。今は、水平に拡張されますが、垂直には拡張されません。私は何が間違っているのか分かりません。ここにXAMLがあります:Silverlight:このコントロールをすべての空き領域を占有させるにはどうすればよいですか?

<Grid x:Name="LayoutRoot" Background="BurlyWood"> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 

    <my:TopSearchBar x:Name="topSearchBar" Grid.Row="0" Navigator="{Binding ElementName=navigationFrame}" HorizontalAlignment="Stretch" VerticalAlignment="Top" /> 

    <!-- I want this to take up all available space between the bottom and top elements --> 
    <navigation:Frame x:Name="navigationFrame" Source="/HomePage.xaml" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="BlueViolet" /> 

    <my:BottomFavoritesBar x:Name="bottomFavoritesBar" Grid.Row="2" Navigator="{Binding ElementName=navigationFrame}" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" /> 

</Grid> 

私は間違って何ができますか?

答えて

4
<Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="Auto"/> 
</Grid.RowDefinitions> 
+0

'Height =" Auto "は暗黙的ではありませんか? –

+0

自動は暗黙的ですが、重要な部分は「*」列です。それは利用可能なすべてのスペースを占めるように指示します。それがなければ、3つの列はすべてAutoになります。これは内容に必要な最小値を意味します。 – Stephan

+0

興味深い。私は、Height = "*" 'を中部に指定することは、他の2つについては、Height =" Auto "を指定することと同じであると考えました。 –

1

問題を再現できません。私の場合、グリッドはその空間を埋めるために垂直方向に拡張し、子コントロールのそれぞれは高さの3分の1を占めます。

StackPanelのように、このグリッド内にすべての垂直スペースを塗りつぶさないようにしていますか?

+0

StackPanelを親コントロールとして使用することで、この問題が発生しました。私は子のグリッドがフルサイズに拡大することを許可していない親xamlファイルにStackPanelを持っていました。親StackPanelをGridに変更すると、他の回答が推奨するように動作し始めました。 –

関連する問題