0

抱歉标题不好,但 WPF 显然是在骗我,所以我不知道该怎么说。我复制了一个非常简单的示例来演示我的问题:

XAML:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" >
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="50"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <Button Height="50" Grid.Row="0" ></Button>
        <Button Height="100" Grid.Row="1" Grid.RowSpan="2"> </Button>
    </Grid>
</Window>

这就是你得到的:

在此处输入图像描述

XAML Designer 显示第 1 行和第 2 行的高度为 50,但它们显然不相等,因此第二行的高度不能为 50。我怀疑这与我设置第二个按钮的行跨度有关属性为两个,但我不明白为什么这会弄乱我按像素设置的行高。

我如何强制它使第 1 行和第 2 行的高度固定为 50?

编辑:我想我需要详细说明我的问题。我可能严重误解了网格的工作原理,所以请多多包涵,如果我是,请告诉我。

首先,我很难理解的是

在此处输入图像描述

为什么第 1 行和第 2 行的高度显示为 50?它们显然不相等,因此第 2 行的高度不能为 50。这是设计视图中的错误还是预期行为?

因为当我在上面显示我的行定义时,下图是我所期望的(请注意,下图是 photoshop 以证明我的观点):

在此处输入图像描述

其中第 1,2 行的高度固定为 50,而按钮的其余部分是第三行的高度设置的值。

4

1 回答 1

3

首先 - 您的控件可能超出 Grid 中的行或列大小。所以这是预期的行为(没有人对你撒谎或欺骗你)。

而不是使用高度使用 MaxHeight 属性,试试这个:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition MaxHeight="50"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button Height="50" Grid.Row="0" ></Button>
        <Button Height="100" Grid.Row="1"></Button>
</Grid>

编辑:

xaml 设计视图非常混乱,因为它在一个很小的区域内显示了很多东西。数百行,如果你有一个大的 UI 组件,那么有时你甚至看不到视图中的一些控件。

因此,如果您使用以下两件事而不是分析 xaml 设计查看器,那么您将很容易理解网格的 UI -

  1. ShowGridLines属性设置Grid为 true。这将显示虚线边界线。
    2.使用WPFInspecter
于 2012-10-04T05:30:15.763 回答