网格+分离器

时间:2014-04-01 12:35:35

标签: wpf grid gridsplitter

<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 个答案:

答案 0 :(得分: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"是关键。

答案 1 :(得分:1)

您需要在Grid Splitter上设置 HorizontalAlignment="Stretch" 才能使其正常运行。

<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" />