GridSplitter MinWidth с фиксированным размером

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

<Grid>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="100" MinWidth="20" />
    <ColumnDefinition Width="10" />
    <ColumnDefinition Width="*" MinWidth="100" />
    </Grid.ColumnDefinitions>

    <Rectangle Fill="Blue" />
    <GridSplitter Grid.Column="1" Background="LightGray" HorizontalAlignment="Stretch" />
    <Rectangle Fill="Yellow" Grid.Column="2" />
</Grid>

Задача:MinWidth столбца справа игнорируется

  • Мне определенно нужно, чтобы ширина первого столбца составляла «100 пикселей» при загрузке страницы, поэтому она не может иметь размер *.
  • Я не хочу устанавливать MaxWidth для первого столбца

*Я знаю, что это уже обсуждалось ранее, но всегда предлагается установить размер столбца на *или установить maxWidth для первого столбца... Я этого не хочу.


Решение найдено, , но оно УЖАСНОЕ! :p , у кого-нибудь есть более чистый способ добиться того, что я хочу... БЕЗ КОДОВ (если возможно )?

private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
   var g = (Grid)sender;

   Double maxW = e.NewSize.Width - g.ColumnDefinitions[2].MinWidth - g.ColumnDefinitions[1].ActualWidth;
   g.ColumnDefinitions[0].MaxWidth = maxW;
}
5
задан danbord 29 June 2012 в 18:20
поделиться