[WPF][XAML] StackPanel の残りの領域全体を割り当てる

2013年12月7日

 StackPanel で積んでいって、最後のコントロールに残っている領域すべてを割り当てたい場合、たとえば以下のように実装します。
 この例では、StackPanel だけでは無理そうなので DockPanel の力を借りています。

<DockPanel>
    <!-- StackPanelの部分 -->
    <StackPanel DockPanel.Dock="Top">
        <Button Content="AAAA" />
        <Button Content="AAAA" />
        <Button Content="AAAA" />
        <Button Content="AAAA" />
    </StackPanel>

    <!-- あまりの部分 -->
    <TextBox AcceptsReturn="True"
             HorizontalScrollBarVisibility="Auto"
             VerticalScrollBarVisibility="Auto"/>
</DockPanel>

 2013-12-8 追記

 「Grid ではダメなのか?」という指摘を受けたので Grid を使った例について記す。
 ポイントは、StackPanel 部分の RowDefinition を "Auto" に設定し、あまり側の RowDefinition を "*" で設定してる点。

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

    <!-- StackPanelの部分 -->
    <StackPanel>
        <Button Content="AAAA" />
        <Button Content="AAAA" />
        <Button Content="AAAA" />
        <Button Content="AAAA" />
    </StackPanel>

    <!-- あまりの部分 -->
    <TextBox Grid.Row="1"
             AcceptsReturn="True"
             HorizontalScrollBarVisibility="Auto"
             VerticalScrollBarVisibility="Auto"/>
</Grid>





カテゴリー: Program, WPF, xaml

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org