簡體   English   中英

在 StackPanel 中包裝內容 wpf

[英]wrapping content in a StackPanel wpf

是否可以將內容包裝在StackPanel中?

我知道我們可以改用WrapPanel 但是出於修改代碼的原因,我必須使用StackPanel

那么,有沒有辦法讓StackPanel中的物品在說 5 件物品后包裝......謝謝!

對我來說,一個簡單的WrapPanel工作正常:

<WrapPanel Orientation="Horizontal" Width="500" />

不在StackPanel或任何其他容器內。 在某些情況下,將Width設置為常量值可能會更好,因為將其綁定到ActualWidth可以防止縮小大小(例如,當父控件縮小時,WrapPanel不會)

創建包含所需項目數的嵌套StackPanel

在下面的示例中,您有兩行,分別由<StackPanel Orientation="Horizontal">元素占用,而這些元素又包含五個將水平顯示在彼此旁邊的項目。

<StackPanel Orientation="Vertical">
    <StackPanel Orientation="Horizontal">
        <Item1 />
        <Item2 />
        <Item3 />
        <Item4 />
        <Item5 />
    </StackPanel>
    <StackPanel Orientation="Horizontal">
        <Item1 />
        <Item2 />
        <Item3 />
        <Item4 />
        <Item5 />
    </StackPanel>
</StackPanel>
<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>

根據您的情況,您可以使用UniformGrid 這里也可以找到一些例子。

您可以將其定義為包含5個這樣的項目。

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

然而,每個項目將獲得完全相同的寬度,因此不確定這是否適合您。

沒有包裝面板,我認為你不能做到這一點。 也許你可以嘗試將一個wrapPanel放在堆棧面板中 - 將其寬度設置為堆棧面板的實際寬度。 你可以綁定它,如Width="{Binding ActualWidth, ElementName=StackPanel1}"

但這只是一個黑客 - 我認為包裝面板最適合您的需求。

我把一個堆疊面板放在按鈕上。 它不會影響按鈕背景。 然后在VB代碼中我使用Chr(12)來表示換行:

Button1.Content = "first line" + Chr(12) + "second line"

您可以使用Chr(12)添加更多行。

對我來說,這是最好和最簡單的解決方案。 設置 ItemsPanel 屬性。

    <ItemsControl>
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>

    </ItemsControl>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM