是否有可能来包装内容StackPanel
?
我知道,我们可以使用的WrapPanel
来代替。 但是,对于代码修改的原因,我必须使用的StackPanel
。
那么,有没有一种方法,使在该项目StackPanel
裹说5个项目...谢谢了!
是否有可能来包装内容StackPanel
?
我知道,我们可以使用的WrapPanel
来代替。 但是,对于代码修改的原因,我必须使用的StackPanel
。
那么,有没有一种方法,使在该项目StackPanel
裹说5个项目...谢谢了!
创建嵌套StackPanel
S的包含项目所需的数目。
在下面的例子中,您有两行,分别由占用<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>
对我来说,一个简单的WrapPanel
工作得很好:
<WrapPanel Orientation="Horizontal" Width="500" />
不是一个内部StackPanel
或任何其他容器。 和宽度设定为恒定值可以优于IM一些情况下,因为它结合于ActualWidth的能够防止减小尺寸(例如,当父控制缩小尺寸,WrapPanel不是)
<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}"
但是,这将只是一个黑客 - 我想画布面板是最适合您的需求。
我把一个StackPanel在按钮上。 这不会影响按钮的背景。 然后,在VB代码我用Chr(12)
以指示线进料:
Button1.Content = "first line" + Chr(12) + "second line"
您可以添加使用更多的线Chr(12)