Контейнер WPF: одинаковая ширина для элементов, но с интервалом между ними - PullRequest
7 голосов
/ 29 июня 2011

Я хотел бы иметь контейнер только с четырьмя кнопками в нем.Кнопки должны быть выровнены по горизонтали, иметь одинаковую ширину, не заполнять все доступное пространство и иметь одинаковое пространство между ними.

Я не хотел бы устанавливать поля для кнопок.Есть ли какая-либо комбинация контейнеров и / или их свойств, которые помогут мне достичь этой цели?

Я пытался использовать StackPanel, UniformGrid, простой Grid, но безуспешно - либо я получаю огромные кнопки (хотя и равны по ширине), или я получаю расстояние между кнопками, но они имеют разную ширину.

Ответы [ 3 ]

13 голосов
/ 29 июня 2011

Использование 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, и интервал будет по-прежнему применяться.

8 голосов
/ 29 июня 2011

Проще установить маржу для всех Button с в UniformGrid:

<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>
3 голосов
/ 29 июня 2011

Используйте UniformGrid, установите для ширины кнопки любое значение, а для их HorizonatalAlignment / VerticalAlignment установите значение Center.

Это позволит удерживать кнопки в фиксированном размере и изменять интервал при изменении размера контейнера, сохраняя интервал между кнопками

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...