我有一个带有scrollviewer的itemscontrol,我有一个wrappanel
除非我为它设置宽度,否则该东西不会换行。我不明白如何使用此控件?我可以在没有宽度的情况下使用吗?我希望它使用stretch auto。
答案 0 :(得分:3)
包装面板必须从某处获得允许的宽度。听起来您希望它仅限于容器中的可用空间。在这种情况下,容器必须是限制宽度的类型。例如,以下工作正常: -
<UserControl x:Class="SilverlightApplication1.WrapPanelStuff"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkitControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit">
<Grid x:Name="LayoutRoot" Background="White">
<ScrollViewer>
<toolkitControls:WrapPanel>
<Border BorderBrush="Black" BorderThickness="2">
<TextBlock Text="This should be quite long so that it takes up some horizontal space" />
</Border>
<Border BorderBrush="Black" BorderThickness="2">
<TextBlock Text="This should be quite long so that it takes up some horizontal space" />
</Border>
<Border BorderBrush="Black" BorderThickness="2">
<TextBlock Text="This should be quite long so that it takes up some horizontal space" />
</Border>
</toolkitControls:WrapPanel>
</ScrollViewer>
</Grid>
</UserControl>
Grid
将WrapPanel
限制为可用宽度。将Grid
替换为Canvas
,它不再有效,因为Canvas
不限制其内容的宽度。
答案 1 :(得分:1)
WrapPanel逻辑将继续将子项放在同一行,直到它以某种方式受到约束。在没有指定宽度的情况下,最简单的方法可能是禁用ScrollViewer的水平滚动条。
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
<toolkitControls:WrapPanel />
</ScrollViewer>
然后,您可以水平拉伸包含的ItemsControl,它应该强制换行。