silverlight wrappanel不包裹

时间:2010-01-27 06:03:12

标签: silverlight

我有一个带有scrollviewer的itemscontrol,我有一个wrappanel

除非我为它设置宽度,否则该东西不会换行。我不明白如何使用此控件?我可以在没有宽度的情况下使用吗?我希望它使用stretch auto。

2 个答案:

答案 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>

GridWrapPanel限制为可用宽度。将Grid替换为Canvas,它不再有效,因为Canvas不限制其内容的宽度。

答案 1 :(得分:1)

WrapPanel逻辑将继续将子项放在同一行,直到它以某种方式受到约束。在没有指定宽度的情况下,最简单的方法可能是禁用ScrollViewer的水平滚动条。

    <ScrollViewer HorizontalScrollBarVisibility="Disabled">
         <toolkitControls:WrapPanel />
    </ScrollViewer>

然后,您可以水平拉伸包含的ItemsControl,它应该强制换行。