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 является более элегантным способом достижения того же эффекта.