WPF - Почему элементы списка не заполняют сетку - PullRequest
4 голосов
/ 30 декабря 2008

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

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

Я использую шаблон данных, определенный в словаре.

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

Есть идеи? Malcolm

Ответы [ 2 ]

10 голосов
/ 03 января 2009

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

2 голосов
/ 30 декабря 2008

РЕДАКТИРОВАНИЕ: Добавлена ​​дополнительная информация и дан ответ на вопрос.

Интересный способ сделать ListBoxItems унифицированным с другими предметами - использовать функцию общего охвата Grid s в 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 - более элегантный способ достижения того же эффекта.

...