Сетка + сплиттер

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="Auto" MinWidth="100"/>
  <ColumnDefinition Width="4"/>
  <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Canvas Grid.Column="0" HorizontalAlignment="Stretch" Background="Orange"/>
<GridSplitter Grid.Column="1" Width="4" Background="Black" />
<Grid Grid.Column="2" />

Когда я изменяю размер холста в столбце 0, холст не растягивается, чтобы заполнить его столбец.
Натяжение не похоже на работу.
Когда я использую Width="*" (что я на самом деле не хочу) для первого столбца я не могу переместить разделитель влево.

Мое требование заключается в том, что размер первого столбца можно изменять (с минимумом), а холст заполняет первый столбец.

2 ответа

Решение

Вам нужно установить HorizontalAlignment="Stretch" на Grid Splitter, чтобы заставить его работать.

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" MinWidth="100"/>
    <ColumnDefinition Width="4"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

   <Canvas Grid.Column="0" HorizontalAlignment="Stretch" Background="Orange"/>
   <GridSplitter Grid.Column="1" Width="4" Background="Black"
              HorizontalAlignment="Stretch" /> <-- HERE
   <Grid Grid.Column="2" />

Попробуй это:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" MinWidth="100"/>
        <ColumnDefinition Width="4"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Canvas Grid.Column="0" Grid.ColumnSpan="2"  Background="Orange" />
    <GridSplitter Grid.Column="1" Width="4" Background="Black" />
    <Grid Grid.Column="2" Background="Green"/>
</Grid>

Grid.ColumnSpan="2" это ключ.

Другие вопросы по тегам