c# - 网格内的 ContentControl 无法正确调整大小

标签 c# wpf contentcontrol

我有一个 3 列网格,其中有:

  • 一个 ContentControl,其内容不适合并被剪裁。
  • GridSplitter
  • 具有最小宽度的第三列

这是代码:

<Window x:Class="TestGridWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" MinWidth="900" Width="900">
    <Grid Grid.Column="2" x:Name="Grid2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition x:Name="Panel1Col" Width="2000*"></ColumnDefinition>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition x:Name="Panel2Col" Width="*" MinWidth="200"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <ContentControl x:Name="ContentControl" Grid.Column="0" BorderThickness="5">
            <Rectangle Width="1800" Height="500" HorizontalAlignment="Left" VerticalAlignment="Top" Fill="Green"></Rectangle>
        </ContentControl>
        <GridSplitter Grid.Column="1" Width="5"></GridSplitter>
        <Border Grid.Column="2" BorderBrush="Blue" BorderThickness="5"></Border>
    </Grid>
</Window>

在列的最小宽度固定的情况下,当我缩小窗口时,第一列会稍微缩小,但网格会大于窗口,并且第三列会被剪裁。

为什么要这么做?我该如何解决这个问题?

最佳答案

您的网格配置:

  • 第 3 列具有星形宽度,最小宽度为 200。
  • 第一列的星形宽度为 2000。这意味着宽2000倍 比第三列的最小宽度为 200。
  • 窗口本身的默认宽度仅为 900

以上配置似乎有问题。没有足够的空间来正确渲染所有列(需要窗口宽度至少为 200 + (2000*200) + 5)。

最终结果,WPF 将此配置呈现为:

  • 第一列几乎占据了 Grid 的全部宽度。
  • 第三列仍然以 200 宽度呈现,但只有最少量的部分(第一列宽度的 1/2000)位于 Grid 内部,其余部分呈现于 Grid 外部 在右边。

渲染布局:

enter image description here

但是如何准确修复它,取决于您想要实现的目标(最有意义的是减少第一列的宽度)。我希望这个解释可以帮助您更好地决定如何修复布局。

关于c# - 网格内的 ContentControl 无法正确调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23151562/

相关文章:

c# - 如何模拟DbSet的Include方法?

c# - WPF 图像仅在时间跨度完成后更新

c# - WPF MVVM数据绑定(bind)文本框依赖覆盖输入或不更新输入

wpf - 如何使用具有持久 ViewModel(s) 的 DataTemplate

wpf - MVVM ViewModel 和 subview

c# - 在 ASP.NET 中创建基于订阅的网站

c# - NServiceBus 升级 2.5 到 3.2 总是重新安装 MSMQ,有没有办法阻止这个?

c# - 有没有办法让 "peeking"成为 MoveNext(),或者我怎样才能解决这个 fencepost 问题?

c# - 当 SelectedItem 是 ContentControl 时,为什么此 ComboBox 会忽略 DataTemplate?

c++ - 在 Windows 中实现 "do not disturb/distract me"模式