Windows 8 WrapPanel

Krz*_*zor 9 windows microsoft-metro windows-8 winrt-xaml

我有自动将StackPanel分解为下一行的问题.这是示例代码:

<StackPanel Orientation="Horizontal" Width="180">
   <TextBlock.../>
   <TextBlock.../>
   <TextBlock.../>
   <Image.../>
    ...
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

现在我想要达到这样的效果:当StackPanel中没有足够的空间用于另一个元素时,它应该放在新行中.我怎么能得到这个(没有必要使用stackpanel)?

PS:我的目标是将文本和图像放在一行中(当没有足够的空间用于另一个元素时,它当然可以中断).也许你可以提供比使用文本块和图像更好的解决方案?

小智 16

尝试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>
Run Code Online (Sandbox Code Playgroud)