WPF, Получение verticalstretch работающий как ожидалось!

Я должен выделить крик к RobotWar, который был первым программированием "игра", что я воспроизвел путь в дни Apple II. Это было записано Silas Warner известности замка Wolfenstein.

7
задан code-zoop 9 November 2009 в 12:27
поделиться

3 ответа

Я нашел решение. Мне нужно переопределить шаблон ItemsPanel, чтобы использовать сетку (или аналогичный контейнер):

<ItemsControl>
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <Grid/>
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>

Я также в этом случае удалил часть xaml, чтобы сделать его более читабельным!

Спасибо

8
ответ дан 6 December 2019 в 10:01
поделиться

Вы пробовали установить для HorizontalContentAlignment и VerticalContentAlignment значение Stretch в ItemsControl ?

1
ответ дан 6 December 2019 в 10:01
поделиться

Значение по умолчанию для ItemsControl.ItemsPanelTemplate - StackPanel , которое сжимает все дочерние элементы по вертикали, давая описанные вами симптомы.

Код решения -zoop изменил это на . Это будет работать, пока в регионе может быть только одно представление. Но если в регионе имеется более одного представления, они все будут размещены друг на друге, а не рядом друг с другом.

Если вам нужна область, которая может обрабатывать несколько видов, но позволяет представлениям растягиваться до полного размера области , используйте вместо этого DockPanel :

<ItemsControl>
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <DockPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>

Это поместит первое представление на панель слева, следующее - рядом с ним и так далее, пока последнее представление не заполнит все оставшееся пространство.

Если вы предпочитаете, чтобы несколько представлений располагались вертикально, как в случае со StackPanel, вам придется настроить это в ItemContainerStyle:

<ItemsControl>
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <DockPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <ItemsControl.ItemContainerStyle>
    <Style>
      <Setter Property="DockPanel.Dock" Value="Top" />
    </Style>
  </ItemsControl.ItemContainerStyle>
</ItemsControl>
10
ответ дан 6 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: