19

でコンテンツをラップすることは可能StackPanelですか?

WrapPanel代わりに a を使用できることはわかっています。しかし、コードを変更する理由から、.a を使用する必要がありStackPanelます。

StackPanelそれで、 5つのアイテムを言ってからラップでアイテムを作る方法はありますか...ありがとう!

4

6 に答える 6

16

StackPanel必要な数のアイテムを含むネストされた を作成します。

<StackPanel Orientation="Horizontal">以下の例では、2 つの行があり、それぞれが要素で占められており、それぞれに 5 つの項目が含まれており、これらの項目が横に並んで表示されます。

<StackPanel Orientation="Vertical">
    <StackPanel Orientation="Horizontal">
        <Item1 />
        <Item2 />
        <Item3 />
        <Item4 />
        <Item5 />
    </StackPanel>
    <StackPanel Orientation="Horizontal">
        <Item1 />
        <Item2 />
        <Item3 />
        <Item4 />
        <Item5 />
    </StackPanel>
</StackPanel>
于 2012-04-13T18:37:09.753 に答える
9
<StackPanel>
        <StackPanel.Style>
            <Style TargetType="{x:Type StackPanel}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type StackPanel}">
                            <WrapPanel/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </StackPanel.Style>
    </StackPanel>
于 2012-04-13T22:30:32.363 に答える
6

シナリオによっては、 UniformGridを使用できます。ここにもいくつかの例があります

このように、5 つのアイテムの後にラップするように定義できます。

<UniformGrid Columns="5">
 <Button />
 <Button />
 <Button />
</UniformGrid>

ただし、各アイテムはまったく同じ幅になるため、これが機能するかどうかはわかりません.

于 2012-04-13T18:56:18.183 に答える
0

ラップパネルなしではできないと思います。スタック パネル内に wrapPanel を配置してみてください。その幅をスタック パネルの実際の幅に設定します。次のようにバインドできますWidth="{Binding ActualWidth, ElementName=StackPanel1}"

しかし、これは単なるハックになります。ラップ パネルがニーズに最も適していると思います。

于 2012-04-13T19:34:23.843 に答える