Grid中的ContentControl没有正确调整大小

时间:2014-04-18 09:47:18

标签: 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>

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

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

1 个答案:

答案 0 :(得分:3)

您的Grid配置:

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

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

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

  • 第一列几乎占据Grid的所有宽度。
  • 第3列仍然以200宽度渲染,但只有最轻微的部分(第1列宽度的1/2000)在Grid内,其余部分在Grid之外呈现右。

渲染布局:

enter image description here

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