WPF - Почему элементы списка не заполняют сетку

У меня есть список со списком ItemsPanelTemplate UniformGrid со строками = 6 и cols= 7.

Я хочу, чтобы элементы списка заняли свое место.

Я использую данные датаплета, определенные в словаре.

Внешним элементом управления моего шаблона является Border с HorizontalAlignment=Stretch и VerticalAlignent=Strectch, но шаблоны не заполняют пространство элементов списка?

Есть идеи? Малькольм

2 ответа

Ответ на это, чтобы установить HorizontalContentAligment и VerticalContentAlignment в Stretch на LISTBOX, а не на табличку данных.

Отредактировано: добавлена ​​дополнительная информация и дан ответ на вопрос.

Интересный способ сделать ListBoxItems быть единым с другими предметами является GridФункция общего доступа в вашем DataTemplate

Пример:

<ItemsControl Grid.IsSharedSizeScope="True" ItemsSource="{Binding Path=Items}">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal">
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="Content"/>
          </Grid.ColumnDefinitions>
          <TextBlock Grid.Column="1" Text="{Binding Path=Name}">
        </Grid>
      </StackPanel>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

Теперь все TextBlocks будет такого же размера в вашем макете. Дочерний элемент должен заполнить все доступное пространство, если не задана конкретная ширина / высота.

В качестве альтернативы вы можете установить ширину и высоту элемента управления растянутыми, однако я думаю, что использование Grid.SharedScopeSize является более элегантным способом достижения того же эффекта.

Другие вопросы по тегам