none
WPF Panelに入れたコントロールがストレッチしない RRS feed

  • 質問

  • grid→WrapPanel→ Border という構造ですが、MainWindowの横サイズを変えるとWrapPanelはストレッチして変形しますが、その中にあるBorderがストレッチ動作をしません。

     Border のMargin="15,15,15,0" ここで右マージンの15を効かせたいのです。
    どうすればストレッチしますか?

    <Window x:Class="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:WpfApp1225"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid Margin="0,0,55,0">
            <WrapPanel Height="215" Margin="94,94,52,0" VerticalAlignment="Top" Background="#FFAA9C9C">
                <Border BorderBrush="Black" BorderThickness="1" Height="68" Width="534" Margin="15,15,15,0"/>
            </WrapPanel>
        </Grid>
    </Window>
    2018年12月25日 6:41

回答

  • WrapPanelは、複数の子要素を順番に横方向に(あるいは縦方向に)並べ、自身の横幅いっぱいになったら次の行からまた並べていく、というパネル要素です。

    なので子要素がWrapPanelの大きさに追随されると本来の用途を果たせなくなってしまいます。

    WrapPanelではない何かを使うなりする必要があります。

    // というか、BorderとWrapPanelの親子を逆にすれば良いような…?

    • 回答としてマーク huahi11112 2018年12月25日 7:04
    2018年12月25日 6:51

すべての返信

  • WrapPanelは、複数の子要素を順番に横方向に(あるいは縦方向に)並べ、自身の横幅いっぱいになったら次の行からまた並べていく、というパネル要素です。

    なので子要素がWrapPanelの大きさに追随されると本来の用途を果たせなくなってしまいます。

    WrapPanelではない何かを使うなりする必要があります。

    // というか、BorderとWrapPanelの親子を逆にすれば良いような…?

    • 回答としてマーク huahi11112 2018年12月25日 7:04
    2018年12月25日 6:51
  • HongLiangさま、ヒントを下さりどうもありがとうございました。

    始めcanvasを使っていましたが解決せず、panel系コントロールでも全てダメだったので質問させていただきました。

    発想を変え、Grid→Gridという構造にする事で解決しました。

        <Grid Grid.Column="2" Height="103" Background="#FFCFF5D7" Margin="10,271,40,0" VerticalAlignment="Top">
                <Border BorderBrush="#FF3E0E0E" BorderThickness="1" Name="Border5" Canvas.Top="220" Margin="20,6,20,10" />
            </Grid>

    2018年12月25日 7:07