【问题标题】:GridSplitter: Scale cell that is not directly adjacent to GridSplitterGridSplitter:缩放与 GridSplitter 不直接相邻的单元格
【发布时间】:2012-04-18 00:54:36
【问题描述】:

我有一个 WPF 网格,它有四列,只包含一个 GridSplitter。其中两列(0 和 3)是可缩放的,但一列可缩放的列不直接与 GridSplitter 相邻(第 2 列)。

第 0 列和第 3 列的初始大小必须相同。所以我不能将第 0 列和第 1 列放在嵌套网格中。

我该如何解决这个问题?

<Grid Height="40">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Rectangle Grid.Column="0" Fill="Blue" Margin="8" />
    <Rectangle Grid.Column="1" Fill="Yellow" Margin="8" Width="24" />
    <GridSplitter Grid.Column="2" Width="8" VerticalAlignment="Stretch" />
    <Rectangle Grid.Column="3" Fill="Red" Margin="8" />
</Grid>

编辑:我在nickolay.laptev的帮助下解决了这个问题

<Grid Height="40">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Rectangle Grid.Column="0" Fill="Blue" Margin="8" />
    <Rectangle Grid.Column="1" Fill="Yellow" Margin="8 8 16 8" Width="24" />
    <GridSplitter Grid.Column="1" Width="8" VerticalAlignment="Stretch" HorizontalAlignment="Right" ResizeBehavior="PreviousAndNext" />
    <Rectangle Grid.Column="2" Fill="Red" Margin="8" />
</Grid>

【问题讨论】:

    标签: wpf layout grid gridsplitter


    【解决方案1】:

    我提供 2 个选项:

    1. 不要对 GridSplitter 使用单列。而是将其添加到可调整大小的列之间的列中(在您的情况下为第二列)。您可以使用水平对齐将拆分器放置在列内的任何位置。
    2. 手动调整列大小。 如果启用预览,请使用 GridSplitter.DragCompleted 事件。更改其中所需的列宽。 如果预览被禁用,请使用另一个带有 Preview 前缀的事件。

    它解决了我的问题。

    【讨论】:

    • 第 1 点为我做了。谢谢。请参阅我编辑的问题。
    【解决方案2】:

    像这样的

            <ColumnDefinition Width="{Binding ElementName=sizedColumn.ActualWidth}" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" x:Name="sizedColumn"/>  
    

    但您需要添加一个多转换器并传递窗口大小和第 1 列大小。

    【讨论】:

      猜你喜欢
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多