2014-04-01 39 views
1
<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列中的Canvas的大小時,畫布未被拉伸以填充其列。
拉伸似乎不起作用。
當我使用Width="*"(實際上我不想要)第一列時,我將分割器移動到左側。Grid +分隔線

我的要求是第一列可調整大小(最小值)並且畫布填充第一列。

回答

1

你需要設置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" /> 
+0

然而,你說得對,這個作品也是這樣的:分隔符的寬度爲4,列數爲4,爲什麼拉伸4中的4會有什麼影響? – Gerard

+1

我還發現添加'ResizeBehavior =「PreviousAndNext」'並且'ResizeBehavior =「PreviousAndCurrent」'。 – Gerard

+0

您的第一條評論 - Splitter僅在第二列,它只是移動它增加/減少其他列的寬度。 –

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"是關鍵。

+0

謝謝你,一個聰明的解決方案。我將'Margin =「0,0,4,0」'添加到畫布上。 – Gerard