[英]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.