gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:07:12 24 4
gpt4 key购买 nike

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

对于固定的列最小宽度,当我缩小窗口时第一列会缩小一点,但网格变得比窗口大并且第三列被剪裁。

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

最佳答案

您的 Grid 配置:

  • 第 3 列的星号宽度和最小宽度为 200。
  • 第一列有 2000 个星宽。这意味着宽 2000 倍比最小宽度为 200 的第 3 列。
  • 它自己的窗口,默认宽度只有 900

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

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

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

渲染布局:

enter image description here

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com