【问题标题】:Grid + splitter网格+分离器
【发布时间】:2014-04-04 22:16:08
【问题描述】:
<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="*"(我实际上不想要)时,我无法将拆分器向左移动。

我的要求是第一列是可调整大小的(有最小值),并且画布填满第一列。

【问题讨论】:

    标签: wpf grid gridsplitter


    【解决方案1】:

    试试这个:

    <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" 是关键。

    【讨论】:

    • 谢谢,一个聪明的解决方案。我将Margin="0,0,4,0" 添加到画布中。
    【解决方案2】:

    您需要在 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" />
    

    【讨论】:

    • 你是对的,这也有效,但是:拆分器在 4 列中的宽度为 4,为什么在 4 中拉伸 4 会有任何影响?
    • 我还发现添加ResizeBehavior="PreviousAndNext"ResizeBehavior="PreviousAndCurrent" 也有效。
    • 对于您的第一条评论 - 拆分器仅在第二列中,它只是移动它增加/减少其他列的宽度。
    猜你喜欢
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2011-02-19
    • 2018-03-03
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多