【问题标题】:WPF GridSplitter sizing with MinWidthWPF GridSplitter 使用 MinWidth 调整大小
【发布时间】:2017-09-17 04:41:33
【问题描述】:

我正在尝试制作一个非常简单的两列窗口,其中右列从宽度 150 开始,最小宽度为 150,左列填充剩余空间,最小宽度为 300,并且GridSplitter 允许调整两列的大小。

我在这里遇到了两个问题。

  1. 当尝试将 GridSplitter 向左拖动超过左列的 MinWidth 允许的范围时,GridSplitter 会按预期停止,但右列会继续增长并溢出窗口的右边界并被剪裁。

  2. 1234563 5-10 像素),导致右列的一些内容被剪裁。

是否需要进行一些简单的更改才能使其正常运行?

<Window x:Class="CustomLabels.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:CustomLabels"
        mc:Ignorable="d"
        Title="Custom Labels" Height="350" Width="550" MinWidth="455" MinHeight="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" MinWidth="300" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="150" MinWidth="150" />
        </Grid.ColumnDefinitions>
        <TextBox x:Name="textBox" Height="23" Margin="81,14,90,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Grid.Column="0"/>
        <Label x:Name="label" Content="Order No." HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" Grid.Column="0"/>
        <Button x:Name="button" Content="Load" Margin="0,14,10,0" VerticalAlignment="Top" Height="23" HorizontalAlignment="Right" Width="75" Grid.Column="0"/>

        <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" VerticalAlignment="Stretch" />

        <Label x:Name="label1" Content="Label" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" Width="47" Grid.Column="2" />
        <ListBox x:Name="listBox" Margin="10,41,10,10" IsSynchronizedWithCurrentItem="True" Grid.Column="2" />
    </Grid>
</Window>

请注意,我已尝试实现this question 中显示的解决方案,但当我希望 right 列以固定宽度开始时,它似乎没有任何效果。

【问题讨论】:

  • @BradleyUffner 这个问题似乎没有解决我也看到的窗口 MinWidth 问题。
  • 我建议将其拆分为单独的问题。它们可能有不同的原因。
  • @BradleyUffner 另外值得注意的是,我尝试在该问题中实施解决方案,但是当我希望 right 列成为时,它似乎没有达到预期的效果以固定宽度开始的那个。将拆分器向左拖动时,我仍然看到相同的增长/削波。
  • 尝试将第二列的默认宽度设置为星标。这解决了我的问题。

标签: .net wpf xaml .net-4.5


【解决方案1】:

愚蠢的 XAML 技巧来拯救。这看起来有点愚蠢,但给出的结果足够接近预期的结果:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*" MinWidth="300" />
        <ColumnDefinition Width="5" />
        <ColumnDefinition Width="0*" MinWidth="150" />
    </Grid.ColumnDefinitions>
    ...
</Grid>

我想这是在告诉它“使用尽可能少的空间,但不要低于 150,这最终会成为列的起始大小。

我在缩小窗口时仍然会出现剪裁;这可能是对填充和/或边距的某种误解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 2013-03-17
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多