C# 在StackPanel wpf中包装内容
是否可以将内容包装在C# 在StackPanel wpf中包装内容,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,是否可以将内容包装在堆叠面板中 我知道我们可以使用WrapPanel。 但是由于代码修改的原因,我必须使用堆栈面板 那么,有没有一种方法可以让堆栈面板中的项目在5个项目之后进行包装。。。 谢谢 创建嵌套的StackPanels,其中包含所需数量的项目 在下面的示例中,您有两行,分别由元素占据,每个元素依次包含五个项目,这些项目将水平显示在彼此旁边 <StackPanel Orientation="Vertical"> <StackPanel Orientation="H
堆叠面板中
我知道我们可以使用WrapPanel
。
但是由于代码修改的原因,我必须使用堆栈面板
那么,有没有一种方法可以让堆栈面板中的项目在5个项目之后进行包装。。。
谢谢 创建嵌套的StackPanel
s,其中包含所需数量的项目
在下面的示例中,您有两行,分别由
元素占据,每个元素依次包含五个项目,这些项目将水平显示在彼此旁边
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Item1 />
<Item2 />
<Item3 />
<Item4 />
<Item5 />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Item1 />
<Item2 />
<Item3 />
<Item4 />
<Item5 />
</StackPanel>
</StackPanel>
根据您的场景,您可以使用。也可以找到一些例子
您可以将其定义为在5项之后换行,如下所示
<UniformGrid Columns="5">
<Button />
<Button />
<Button />
</UniformGrid>
但是,每个项目的宽度都完全相同,因此不确定这是否适用于您。我认为如果没有包装面板,您无法完成这项工作。也许您可以尝试在堆栈面板内放置一个wrapPanel-将其宽度设置为堆栈面板的实际宽度。您可以像Width=“{Binding ActualWidth,ElementName=StackPanel1}”那样绑定它
但这只是一个小技巧-我认为wrap面板最适合您的需要。
<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>
对我来说,一个简单的包装就可以了:
<WrapPanel Orientation="Horizontal" Width="500" />
不在堆叠面板
或任何其他容器内。在某些情况下,将Width设置为常量会更好,因为将其绑定到ActualWidth可以防止缩小尺寸(例如,当父控件缩小尺寸时,WrapPanel不会缩小)我在按钮上方放置了一个堆栈面板。它不会影响按钮背景。然后在VB代码中,我使用了Chr(12)
,表示换行:
Button1.Content = "first line" + Chr(12) + "second line"
您可以使用Chr(12)添加更多行
为什么你必须使用堆叠面板
而不是包裹面板
?我们已经定制了堆叠面板的某些功能。因此,我们的堆叠面板支持我们自己的虚拟化。我不想重新发明虚拟包裹面板的轮子。:)我听到了,里奇。。但是,很难说为什么在没有任何上下文的情况下坚持保留stackPanel!就这样!这是一种(StackPanel),WrapPanel是一种内部癌症!这是严重的吗?这非常适合于没有固定数量的每行项目=)