我遇到了自动将StackPanel拆分到下一行的问题。以下是示例代码:
<StackPanel Orientation="Horizontal" Width="180">
<TextBlock.../>
<TextBlock.../>
<TextBlock.../>
<Image.../>
...
</StackPanel>现在我想实现这样的结果:当StackPanel中没有足够的空间容纳另一个元素时,应该将它放在新行中。我怎样才能做到这一点(不需要使用stackpanel)?
PS:我的目标是在一行中放置文本和图像(当然,当没有足够的空间容纳另一个元素时,它可能会中断)。也许你可以提供比使用文本块和图片更好的解决方案?
发布于 2012-07-20 00:31:04
试试WrapGrid吧,它应该能做你想做的事:http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.wrapgrid.aspx
唯一的问题(这不是一件坏事)是WrapGrid只能显示ItemsControl中的项,所以可以这样使用它(将ListView更改为任何ItemsControl):
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>发布于 2012-07-19 23:47:45
使用VariabeSizedWrapGrid而不是StackPanel,请参见http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.variablesizedwrapgrid.aspx
对于多个TextBlocks,请考虑使用具有多个运行的单个textBlock。当然,您的映像不能包含在运行中,但具有两个运行的一个TextBlock要好于连续的两个TextBlocks。
更新:这可能根本不能帮助你得到你想要的布局。您可能需要查看RichTextBlock控件,请参见http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.richtextblock.aspx
发布于 2012-08-31 03:09:55
开箱即用,没有适用于WinRT的WrapPanel。至少现在不是..。然而,在此期间,有一个变通办法...我已经测试过了,它工作正常。
您可以在下面的链接中查看以下链接。
http://www.codeproject.com/Articles/24141/WrapPanel-for-Silverlight-2-0
由于WrapPanel继承自Panel类,您可以创建一个WrapPanel或简单地使用您可以在上面的SLV2应用程序中找到的WrapPanel.cs代码。
然后只需包含类似代码
Xmlns:wrapPanel=“使用:您的yourWinRTApp”
……
……
它应该能起作用..。
信息摘自:
http://www.michielpost.nl/PostDetail_75.aspx
https://stackoverflow.com/questions/11563062
复制相似问题