LastChildFill не работает при попытке закрепить ItemsControl
-
20-08-2019 - |
Вопрос
У меня есть следующая разметка в пользовательском элементе управления WPF:
<Border Name="_border" BorderThickness="4" BorderBrush="Blue">
<Canvas Name="_canvas" Background="Black" >
<DockPanel LastChildFill="True">
<ItemsControl Name="_itemsControl" Background="Bisque" AllowDrop="True" Height="100" Width="100"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemTemplate="{StaticResource pictureTemplate}"
ItemsPanel="{StaticResource panelTemplate}"
Drop="_itemsControl_Drop"
DragOver="_itemsControl_DragOver"
DragLeave="_itemsControl_DragLeave"
PreviewMouseLeftButtonDown="_itemsControl_PreviewMouseLeftButtonDown"
PreviewMouseMove="_itemsControl_PreviewMouseMove">
</ItemsControl>
</DockPanel>
</Canvas>
</Border>
Я хотел бы, чтобы ItemsControl заполнил все доступное пространство, но он не подчиняется свойству LastChildFill DockPanel.Значения «Растягивание» по горизонтали и вертикали тоже не помогают.Что мне не хватает?
Решение
Если вы полностью удалите Canvas, у вас не возникнет этой проблемы.После того как вы создали холст, вам необходимо установить размер и положение элементов на холсте (например, DockPanel).
Другие советы
Каков размер вашей DockPanel?Попробуйте установить фон на DockPanel для тестирования.
Я не думаю, что ваша проблема заключается в том, что ваш ItemsControl не растягивается, чтобы заполнить вашу DockPanel, но на самом деле ваша DockPanel не растягивается, чтобы поместиться внутри элемента управления Canvas.Элемент управления Canvas и его дочерние элементы не будут изменять размер в соответствии со своим родительским элементом.