我的xaml在stackPanel中遇到了一个奇怪的问题。
我的stackPanel包含一个文本框和一个按钮。
这应该在同一行(如果可能,取决于文本宽度)。 问题是:
如果stackPanel有Orientation="Vertical"
,则按钮将转到文本旁边的行。
如果stackPanel有Orientation="Horizontal"
,则该行不会执行任何断行,因此所有行都将离开我的网格。
<StackPanel Name="spRemplir"
Grid.Row="2"
Grid.ColumnSpan="6"
Width="560"
Margin="5,5,5,5"
Orientation="Horizontal"
VerticalAlignment="Center">
<TextBlock FontWeight="Bold"
Text={Binding Text}
TextWrapping="Wrap"/>
<Button Name="btRemplir"
Margin="5,0,0,0"
Width="150"
Content="Remplir"/>
</StackPanel>
如何获得一个stackPanel,必要时会破坏行,并在同一行上有一个文本和一个按钮?
感谢Eli Arbel更新了Wrapanel:
<toolkit:WrapPanel Name="spRemplir"
Grid.Row="2"
Grid.ColumnSpan="6"
Margin="5,5,5,5"
Width="560"
Orientation="Horizontal">
<TextBlock FontWeight="Bold"
Text={Binding Text}
TextWrapping="Wrap"/>
<Button Name="btRemplir"
Content="Remplir"/>
</toolkit:WrapPanel>
但是,按钮仍然在下一行,而在同一行上的文本后面有足够的空格。
尝试删除面板上的宽度,但是,没有更多的包装......
我不明白。即使在同一个网格上有stackPanel,它们也不应该干扰包裹面板吗?
谢谢。
答案 0 :(得分:2)
您可以尝试Silverlight Toolkit中的WrapPanel
。请注意,此面板不允许您将项目拉伸到容器宽度。
您还应该考虑删除面板的固定Width
。
答案 1 :(得分:1)
尝试使用Grid而不是StackPanel。 StackPanel的问题在于它们不会报告它们不在房间的可视树。这不是一个错误,它只是它们的方式,并且在您需要时它是合适的。但我避开它们,除了最内层的元素。但是StackPanels中没有StackPanels,因为你会丢失TextWrapping / Scrolling,只是让元素落在页面的右边或底部。
其次,确保外部容器已设置为宽度为约束。例如,在布局根目录中,为其指定一个列,并将宽度设置为*表示=“可用空间,但不是更多”
一旦你的外容器受到限制,那么你的TextBlock将正确包装。
格雷格
答案 2 :(得分:0)
考虑使用WrapPanel代替堆栈面板:http://wpftutorial.net/WrapPanel.html