Не совсем понятно, почему вы хотите использовать StackPanel
для этого. StackPanel растет по мере того, как его содержимое увеличивается, отдельные элементы управления «укладываются», чтобы поместиться в пространство, доступное для StackPanel. Это не соответствует вашим требованиям для "планки, которая пропорционально разделена и растянута" .
Если вы используете что-то вроде Grid
, вы можете определить столбцы и строки, которые будут пропорционально разнесены. Например, для сетки с двумя столбцами, ширина которых определяется как 2*
и 3*
, эти столбцы будут составлять две пятых ширины сетки и три пятых (пятые, потому что 2 + 3 = 5). Излишне говорить, что вы можете иметь столько столбцов, сколько захотите, и определять относительный размер по своему усмотрению, возможно, используя 30 *, 50 *, 20 * из информации в вопросе. Или, если убрать звездочки, значения становятся буквальными, а не относительными значениями.
Если вы просто хотите что-то равномерно распределить, попробуйте UniformGrid
. Вы можете ограничить количество столбцов или строк.
Если у вас есть какие-то сложные потребности, которые ничем не покрыты, вы можете написать собственный контейнерный элемент управления.