Проблема: окно, в котором есть ItemsControl с некоторыми элементами (скажем, Rectangles).В окне установлены MinWidth и MinHeight (например, 300). Мне нужно это, когда я изменяю размер окна, если у прямоугольников недостаточно места для отображения в 2 столбцах.И если в 2 столбцах все еще не хватает места для отображения средства просмотра прокрутки.
Что я пробовал: 1. Создать расширенный элемент ItemsControl:
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local:MyGrid IsItemsHost="True" x:Name="PART_ItemsPanel" Initialized="OnItemsPanelInitialized" CanVerticallyScroll="True" CanHorizontallyScroll="True">
<local:MyGrid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</local:MyGrid.ColumnDefinitions>
<local:MyGrid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</local:MyGrid.RowDefinitions>
</local:MyGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
Мой ItemsControl имеет в качестве ItemsPanelTemplate расширенную сетку:
открытый класс MyGrid: Grid, IScrollInfo {.... реализация IScrollInfo}
Я использую эту сетку, полагая, что когда ItemsControl будет PrepareContainerForItemOverride (), яможно использовать это, чтобы разделить элементы в два столбца.
Идея "взята" из конференции .... но я не знаю, что делать дальше ... У меня есть вопросы, такие как: когда я переопределитьИзмерение и расположение для сетки данных Я устанавливаю положение элементов в DataGrid, но тогда он называется PrepareContainerForItemOverride () ... и что тогда?Я должен вычислить количество строк, которые я должен сделать?но если затем я снова изменю размер окна ... PrepareContainerForItemOverride () не будет вызываться ...
Это проблема для меня ... пожалуйста, дайте мне подсказку, если у некоторых из вас есть такая.Спасибо, ребята!