Как заставить дочерние элементы StackPanel заполнять максимальное пространство вниз?

Причина, по которой это происходит, заключается nsautolayout в том, что панель стека измеряет wpf каждый дочерний элемент с wpf положительной бесконечностью ios-autolayout в качестве ограничения для xaml оси, по которой она складывает autolayout элементы. Дочерние элементы dockpanel управления должны возвращать ios-autolayout размер, который они хотят nsautolayout быть (положительная бесконечность autoresize не является допустимым возвратом wpf из MeasureOverride ни на одной из осей), поэтому autoresize они возвращают наименьший xaml размер, в котором все поместится. У xaml них нет возможности узнать, сколько dockpanel места им действительно нужно dockpanel заполнить.

Если в вашем представлении xaml не требуется прокрутка, а wpf приведенный выше ответ вам autolayout не подходит, я бы предложил autoresize реализовать собственную панель. Вероятно, вы wpf можете получить прямо из ios-autolayout StackPanel, а затем все, что nsautolayout вам нужно сделать, это изменить nsautolayout метод ArrangeOverride так, чтобы он разделял autoresize оставшееся пространство между dockpanel его дочерними элементами dockpanel (предоставляя им одинаковое autoresize количество дополнительного wpf пространства). Элементы должны nsautolayout отображаться нормально, если autoresize им предоставляется больше dockpanel места, чем они хотели, но xaml если вы дадите им меньше, вы xaml начнете видеть сбои.

Если xaml вы хотите иметь возможность wpf прокручивать все это, я боюсь, что autolayout все будет немного сложнее, потому ios-autolayout что ScrollViewer дает вам ios-autolayout бесконечное пространство wpf для работы, которое поставит autoresize вас в то же положение, что autoresize и дочерние элементы изначально autoresize были. В этой ситуации вы autoresize можете захотеть создать новое dockpanel свойство на вашей новой панели, которое ios-autolayout позволяет вам указать размер xaml области просмотра, вы должны autoresize иметь возможность привязать xaml его к размеру ScrollViewer. В wpf идеале вы должны реализовать nsautolayout IScrollInfo, но это начинает усложняться, если autolayout вы собираетесь реализовать nsautolayout все это должным образом.

wpf

xaml

autolayout

autoresize

dockpanel

2022-10-18T00:46:03+00:00
Вопросы с похожей тематикой, как у вопроса:

Как заставить дочерние элементы StackPanel заполнять максимальное пространство вниз?