WPF容器:元素的宽度相等,但它们之间有间距

我想要一个只有四个按钮的容器。 按钮应水平对齐,具有相同的宽度,不能填充所有可用空间并且它们之间具有相等的空间。

我不想为按钮设置边距。 容器和/或其属性是否有任何组合,这将帮助我实现这一目标?

我试过使用StackPanel,UniformGrid,简单的网格,但没有成功 - 要么我得到巨大的按钮(虽然宽度相等),或者我最终与按钮之间的间距,但他们有不同的宽度。


将ItemsControl与某种面板结合使用似乎是对我来说最干净的解决方案。 (如上所述,UniformGrid可能是一个不错的选择),例如:

<ItemsControl>
    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter Property="FrameworkElement.Margin" Value="5"/>
        </Style>
    </ItemsControl.ItemContainerStyle>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.Items>
        <Button Content="Button"/>
        <Button Content="Button"/>
        <Button Content="Button"/>
        <Button Content="Button"/>
    </ItemsControl.Items>
</ItemsControl>

这具有的优点是,间距布局由项目控件处理,而不是手动对内容进行处理。 此外,内容可以是任何FrameworkElement,并且间距仍将适用。


UniformGrid为所有Button设置边界更容易:

<UniformGrid Columns="4" Rows="1">
   <UniformGrid.Resources>
      <Style TargetType="{x:Type Button}">
         <Setter Property="Margin" Value="2"/>
      </Style>
   </UniformGrid.Resources>

   <Button/>
   <Button/>
   <Button/>
   <Button/>
</UniformGrid>

使用UniformGrid,将按钮的宽度设置为任何你喜欢的和他们的Horizo​​natalAlignment / VerticalAlignment to Center。

这将使按钮保持固定大小,并在调整容器大小时更改间距,同时保持按钮之间的间距相同

链接地址: http://www.djcxy.com/p/50065.html

上一篇: WPF Container: equal width for elements but with spacing between them

下一篇: Stretch empty WPF ListView to take the remaining space