2013-02-18 164 views
6

一个带有3行和3列的WPF网格控件。相关行的高度设置为自动。在前两个单元中,我有两个具有动态高度的控件。在第三个单元格中,我想要自动设置另一个控件以在网格单元格内拉伸。我尝试过VerticalAlignment="Stretch",但是它只是简单地将网格行高设置为等于控件的高度。我在这里有什么选择?WPF:设置控件高度以填充网格行高

回答

7

不知道您在Cell 3中使用的是什么样的控件,但大多数WPF控件会自动拉伸以适应Grid单元格内部。网格的行高将由单元格1和2中控件的高度设置。

如果您正在使用某种自定义控件,其中高度的默认行为不同,则可以设置Height="Auto"

如果这也不行,你可以做一个数据绑定来获得在任一单元1或2的控制设置你的控制Height物业小区3到的实际高度如下:

Height="{Binding ActualHeight, ElementName=MyControlNameFromCell1, Mode=OneWay}" 

编辑

另一种方式,可能是更强大的是做一个数据行的高度结合。因此,不要使用"Auto"作为行的高度,请使用上面显示的数据绑定。

+0

谢谢。单元格3中的控件是TabControl,而单元格1和单元格2中包含网格。问题是TabControl的内容(以及TableControl本身)比两个Grid都大,所以整行占用了TabControl的高度。我想要的是为TabControl获取网格的高度(其中较大的一个),并在其内部引入滚动条以显示其所有内容。我已经在TabControl中添加了一个ScrollViewer,但是由于TabControl变得足够大以显示其所有内容,ScrollViewer仍然无用。 – dotNET 2013-02-18 17:00:17

+0

绑定也似乎不起作用。 – dotNET 2013-02-18 17:02:28

+0

更新。绑定实际上工作。问题是我在TabControl的属性中有Margin =“3”,这在某种程度上导致它变得和它的内容一样大。删除边距并添加上面提到的高度绑定似乎可以做到。 – dotNET 2013-02-18 17:40:44