Я должен выделить крик к RobotWar, который был первым программированием "игра", что я воспроизвел путь в дни Apple II. Это было записано Silas Warner известности замка Wolfenstein.
Я нашел решение. Мне нужно переопределить шаблон ItemsPanel, чтобы использовать сетку (или аналогичный контейнер):
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Я также в этом случае удалил часть xaml, чтобы сделать его более читабельным!
Спасибо
Вы пробовали установить для HorizontalContentAlignment и VerticalContentAlignment значение Stretch в ItemsControl ?
Значение по умолчанию для 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>