wpf - Gridsplitter 忽略列的最小宽度

标签 wpf grid gridsplitter

我想要一个简单的 3 列网格,其中包含可调整大小的列和 80 的 MinWidth。

代码如下所示:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="120" MinWidth="80"/>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="*" MinWidth="80"/>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="120" MinWidth="80"/>
  </Grid.ColumnDefinitions>
  <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" />
  <GridSplitter Grid.Column="3" Width="5" HorizontalAlignment="Center" />
</Grid>

但它并没有以我想要和预期的方式工作。当分离器被推到左边时,一切正常。当第二个分离器向右推时,一切正常。但是如果第一个拆分器被推到右边,它会将第三列和第二个拆分器推出网格(或使其宽度=0)。

我为 gridsplitters 使用了单独的列,就像在 msdn 示例中所做的那样:
<Grid.ColumnDefinitions>
  <ColumnDefinition/>
  <ColumnDefinition Width="Auto" />
  <ColumnDefinition/>
</Grid.ColumnDefinitions>
...
<GridSplitter Grid.Column="1"
      HorizontalAlignment="Center"
      VerticalAlignment="Stretch"
      Background="Black" 
      ShowsPreview="True"
      Width="5"
      />

我还将对齐设置为居中,因为我在某处阅读正确对齐可能是一个问题
并尝试了不同的 ResizeBehaviors。

有谁知道,如何解决此问题,以便始终可见 3 列,宽度至少为 80 像素?

谢谢你的帮助

最佳答案

对于 minwidth 设置为 80 的三列,请尝试使用此方法。在使用 gridsplitters 时,请使用 * 而不是指定确切的宽度。

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" MinWidth="80" />
            <ColumnDefinition Width="5"/>
            <ColumnDefinition Width="*" MinWidth="80"/>
            <ColumnDefinition Width="5"/>
            <ColumnDefinition Width="*" MinWidth="80"/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
        <GridSplitter Grid.Column="1"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
        <TextBlock Grid.Column="2" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
        <GridSplitter Grid.Column="3"   VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
        <TextBlock Grid.Column="4" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
    </Grid>
</ScrollViewer>

关于wpf - Gridsplitter 忽略列的最小宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609735/

相关文章:

wpf - 从 WIX 安装程序 : Fail on STAThread issue 启动使用 WPF 编写的 CustomAction UI

wpf - 有人知道用于调整具有跨单元格的网格列大小的算法吗? (WPF)

html - 制作像国际象棋一样的巨大网格最轻的方法是什么?

javascript - kendo 将网格拖放到 TreeView 节点

c# - 网格列和行长度上的 WPF 转换器仅在不使用 gridsplitter 时才有效

c# - WPF中的临时锁定窗口(重新)大小

c# - 秒表的替代品?

WPF CollectionViewSource 多个 View ?

wpf - Gridsplitter 拉伸(stretch)限制 - WPF

wpf - 要序列化哪些参数以保存 WPF GridSplitter 的位置?