StackPanel项目不会换行到新行

时间:2017-09-18 10:54:46

标签: wpf xaml

我有一个ItemsControl StackPanel作为ItemsPanelTemplate,内部显示的项目(Button)不会换行到新行。我已尝试将HorizontalContentAlignment属性添加到ItemsControl并使用这些选项,但它没有帮助。我做错了什么?

<ItemsControl ItemsSource="{Binding RecipientsNames}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button x:Name="btnContact" Click="BtnContact_Click"
                    Width="Auto" Height="14" Padding="0" BorderThickness="0" Margin="0 0 6 0" HorizontalAlignment="Left" VerticalAlignment="Top">
                <TextBlock Text="{Binding Path=Name}" FontSize="12" Margin="0 -2 0 -2"/>
            </Button>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

1 个答案:

答案 0 :(得分:1)

你让你的面板混乱,

  • StackPanel沿线性方向扩展无穷大。
  • WrapPanel堆叠元素,直到它们到达可见边缘 区域然后在先前的扩展下开始新的堆栈 垂直于堆叠方向
  • 一个UniformGrid自身调整大小以适应整个区域,然后将其拆分 进入一组行数和列数,因此如果将其设置为3列 并添加4项,第4项将出现在第二行的第1列中,

因为统一网格与WrapPanel不同,这不受项目大小的影响我通常会发现它会为包裹面板产生更具视觉吸引力的布局,但需要配置以充分利用可用空间