对不好的标题感到抱歉,但是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.我怀疑这与我设置第二行的事实有关按钮的行跨属性为2但我不明白为什么这会弄乱我按像素设置的行高。
如何强行将第1行和第2行的高度固定为50?
编辑:我想我需要详细说明我的问题。我可能会严重误解网格是如何工作的,所以请耐心等待我,让我知道我是不是。
首先,我很难理解的是
为什么第1行和第2行的高度显示为50?它们显然不相等所以第2行不能有50的高度。这是设计视图中的错误还是预期的行为?
因为当我制作上面显示的行定义时,下面的图片就是我所期望的(请注意下面的图片是用来说明我的观点的照片):
第1,2行的高度固定为50 ,按钮的其余部分是第三行的高度设置为。
答案 0 :(得分: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 -
ShowGridLines
属性设置为Grid
为true。这将显示虚线边框线。