WrapPanel ItemsPanelTemplate

时间:2010-09-27 20:04:34

标签: wpf

我有以下xaml:

<Border BorderBrush="Black"
                BorderThickness="1.5"
                CornerRadius="5">
    <Grid ShowGridLines="True">
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
      <ItemsControl composite:RegionManager.RegionName="MainRegion">
        <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
            <WrapPanel/>
          </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
      </ItemsControl>
      <Button Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Top" Style="{StaticResource WindowCloseButton}"/>
    </Grid>
</Border>

当我调整窗口大小时,换行面板中的项目不会换行。

当ItemsControl不在网格中时,它可以工作:

<Border BorderBrush="Black"
                BorderThickness="1.5"
                CornerRadius="5">
    <ItemsControl composite:RegionManager.RegionName="MainRegion">
      <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
          <WrapPanel/>
        </ItemsPanelTemplate>
      </ItemsControl.ItemsPanel>
    </ItemsControl>
</Border>

如果ItemsControl在Grid中,有没有办法让项目正确包装?

2 个答案:

答案 0 :(得分:0)

这一行的问题:

<ColumnDefinition Width="Auto"/>

“自动”一词意味着“我会尽可能多地调整大小”。使用固定数字或星号:

  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="0.5*"/>
    <ColumnDefinition/>
  </Grid.ColumnDefinitions>

答案 1 :(得分:0)

将网格列宽度更改为*而不是自动

:此

<ColumnDefinition Width="Auto"/>

<强>变为

<ColumnDefinition Width="*"/>