WPF:将控件高度设置为填充网格行高
Posted
技术标签:
【中文标题】WPF:将控件高度设置为填充网格行高【英文标题】:WPF: Set Control Height to Fill Grid Row Height 【发布时间】:2013-02-02 23:43:05 【问题描述】:具有 3 行和 3 列的 WPF 网格控件。有问题的行高设置为自动。在前两个单元格中,我有两个具有动态高度的控件。在第三个单元格中,我有另一个控件,我希望将其自动设置为在 Grid 单元格中进行拉伸。我试过VerticalAlignment="Stretch"
,但这只是将网格行高度设置为等于控件的高度。我在这里有什么选择?
【问题讨论】:
【参考方案1】:不确定您在单元格 3 中使用的是哪种控件,但大多数 WPF 控件会自动拉伸以适应网格单元格。网格的行高将由单元格 1 和 2 中控件的高度设置。
如果您使用某种自定义控件,其中高度的默认行为不同,您可以设置Height="Auto"
。
如果这也不起作用,您可以进行数据绑定以获取单元格 1 或 2 中控件的实际高度。将单元格 3 中控件的 Height
属性设置为以下内容:
Height="Binding ActualHeight, ElementName=MyControlNameFromCell1, Mode=OneWay"
编辑
另一种可能更可靠的方法是对行的高度进行数据绑定。因此,不要使用"Auto"
作为行高,而是使用上面显示的数据绑定。
【讨论】:
谢谢。单元格 3 中的控件是 TabControl,而单元格 1 和单元格 2 中有网格。问题是 TabControl 的内容(以及 TableControl 本身)都比两个 Grid 都大,所以整行都采用 TabControl 的高度。我想要的是 TabControl 获取网格(其中较大的一个)的高度,并在其内部引入一个滚动条以显示其所有内容。我已经在 TabControl 中添加了一个 ScrollViewer,但是由于 TabControl 变得足够大以显示其所有内容,因此 ScrollViewer 仍然无用。 更新。绑定确实有效。问题是我在 TabControl 的属性中有 Margin="3" 以某种方式导致它变得与其内容所需的一样大。删除 Margin 并添加您上面提到的 Height 绑定似乎可以解决问题。以上是关于WPF:将控件高度设置为填充网格行高的主要内容,如果未能解决你的问题,请参考以下文章