在wrappanel中的保证金

时间:2012-10-17 14:00:49

标签: wpf xaml layout

我正在使用WPF的wrappanel。问题是,在它的右侧有一个空的空间,我想减少,我不知道如何。

在下面的图片中你可以看到右侧边缘的右侧,我希望它们都像左侧边缘一样。

enter image description here

这是我的XAML:

 <Grid x:Name="root">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="263*" />
        <ColumnDefinition Width="240*" />
    </Grid.ColumnDefinitions>
    <Rectangle Fill="LightBlue"/>
    <WrapPanel >
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
    </WrapPanel>
</Grid>

2 个答案:

答案 0 :(得分:1)

您似乎忘记将WrapPanel置于Column的中心位置。像这样:

<Grid x:Name="root">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="263*" />
        <ColumnDefinition Width="240*" />
    </Grid.ColumnDefinitions>
    <Rectangle Fill="LightBlue"/>
    <WrapPanel HorizontalAlignment="Center">
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
        <Rectangle Margin="10" Fill="Red" Width="40" Height="40"></Rectangle>
    </WrapPanel>
</Grid>

答案 1 :(得分:0)

你最终获得了大空间,因为它只能在你指定的空间中放置这么多的方块。它不能完全适合第一行的最后一个方格,所以它包装它。右边那块空间只是额外的“死”空间。

使用WrapPanel可以做的另一件事是指定项目的大小。你会看到我使用了ItemHeight和ItemWidth属性,这让我可以更好地控制它的大小。

 <Grid x:Name="LayoutRoot">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="263*" />
                <ColumnDefinition Width="280*" />
            </Grid.ColumnDefinitions>
            <Rectangle Fill="LightBlue"/>
            <WrapPanel ItemHeight="60" ItemWidth="60" >
                <Rectangle Margin="5" Fill="Red" Width="60" Height="60"></Rectangle>
               <Rectangle Margin="5" Fill="Red" Width="60" Height="60"></Rectangle>
               <Rectangle Margin="5" Fill="Red" Width="60" Height="60"></Rectangle>
               <Rectangle Margin="5" Fill="Red" Width="60" Height="60"></Rectangle>
               <Rectangle Margin="5" Fill="Red" Width="60" Height="60"></Rectangle>
               <Rectangle Margin="5" Fill="Red" Width="60" Height="60"></Rectangle>
            </WrapPanel>
            </Grid>