Ширина столбца сетки - смешать * (звездочка), Авто и заполнить левое пространство

У меня есть ширина сетки, следующая за определениями столбцов:

<Grid.ColumnDefinitions>
        <ColumnDefinition MinWidth="320" MaxWidth="450" Width=".32*"/>
        <ColumnDefinition MinWidth="200" Width="Auto"/>
        <ColumnDefinition MinWidth="200" Width="Auto"/>
        <ColumnDefinition Width="Auto"/> <- (4) should fill all available space
        <ColumnDefinition MinWidth="250" MaxWidth="300" Width=".20*"/>
</Grid.ColumnDefinitions>

Проблема в том, что установка ширины в Auto для столбца (4) обнуляет его ширину, а последний столбец находится рядом с третьим. Я бы хотел, чтобы последний столбец был выровнен по правому краю приложения, а первые три — по левому.

Я также не могу установить (4) ширину в звездочку (*) - очевидно, она растягивается относительно первого и последнего столбца.

Я какое-то время пытался использовать горизонтальное выравнивание, но в результате контент не заполняет ширину столбцов. Я мог бы, возможно, привязать ширину содержимого к ширине столбца или что-то в этом роде, но мне любопытно, есть ли какой-нибудь простой способ добиться того, чтобы столбец (4) заполнил все левое пространство.


person Joe    schedule 20.04.2012    source источник
comment
Я пытаюсь понять ваш вопрос. Почему следующее утверждение является проблемой? из вашего сообщения: я также не могу установить (4) ширину в звезду (*) - очевидно, она растягивается относительно первого и последнего столбца.   -  person denis morozov    schedule 20.04.2012


Ответы (1)


Я думаю, вы не совсем поняли (*), что означает средневзвешенное значение.

так что для вашего случая.

<Grid.ColumnDefinitions>
     <ColumnDefinition MinWidth="320" MaxWidth="450" Width="3*"/>
     <ColumnDefinition MinWidth="200" Width="Auto"/>
     <ColumnDefinition MinWidth="200" Width="Auto"/>
     <ColumnDefinition Width="5*"/>
     <ColumnDefinition MinWidth="250" MaxWidth="300" Width="2*"/>
 </Grid.ColumnDefinitions> 

если вы хотите сделать столбец (4) маленьким, уменьшите * вес и увеличьте, где хотите.

Надеюсь, поможет...

person Ankesh    schedule 20.04.2012
comment
Спасибо за ответ. Веса знаю - просто написал по другому. Если я напишу .3* и .5* вместо 3* и 5* - разницы вообще не будет. Проблема в том, что если я установлю (4) столбец, скажем, 5 *, он не уменьшит его размер до 0, если я изменю размер окна до небольшого размера. Я хочу, чтобы 4 столбца не влияли на размер остальных - просто заполнили левое пространство - если оно есть. - person Joe; 20.04.2012
comment
@Джо, насколько я знаю, так и должно быть, потому что, когда вы уменьшаете размер ... это уменьшает коэффициент веса ... попробуйте удалить все Auto и установить минимальную и максимальную ширину для одного и того же - person Ankesh; 20.04.2012
comment
У меня это работает с Auto, но полезно знать об атрибутах Min и Max. - person Grault; 20.03.2014