wpf - GridSplitter:缩放与 GridSplitter 不直接相邻的单元格

标签 wpf layout grid gridsplitter

我有一个 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>

最佳答案

我提供两种选择:

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

它解决了我的问题。

关于wpf - GridSplitter:缩放与 GridSplitter 不直接相邻的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009033/

相关文章:

c# - 如何使笔刷平滑而中间没有线条

c# - 什么决定了 NavigationCommands.BrowseBack 是否调用页面构造函数?

Magento 管理网格将数据从 Action 发送到 Controller

jquery - 如何访问struts jquery grid插件选定行上的数据?

wpf - 如何在WPF中仅通过单击来获取选定的TreeViewItem?

c# - 如何加密ConnectionString中的sql用户名和密码?

html - float div 不移动到的问题

wpf - System.Windows.Visibility 折叠与隐藏

android - 如何通过代码在 RelativeLayout 中定位 Button?

objective-c - 如何将 NSWindow 对齐到网格