WPF - 如何将边框停靠在画布上?

Posted

技术标签:

【中文标题】WPF - 如何将边框停靠在画布上?【英文标题】:WPF - How to dock a Border onto a Canvas? 【发布时间】:2009-03-19 20:10:19 【问题描述】:

我在画布内有一个边框。边框的高度/宽度根据其内容而变化。我希望边框伸展以填满整个画布。我该怎么做?

我在边界上试过这个没有成功:

Height="Binding ElementName=MainCanvas, Path=Height" 
Width="Binding ElementName=MainCanvas, Path=Width"

【问题讨论】:

你为什么不把画布放在边框里面呢?这样您甚至不必进行额外的绑定。 【参考方案1】:

画布是否有明确的高度/宽度?它可能是自动调整大小并且具有 double.NaN 的高度/宽度。

尝试将子高度/宽度绑定到画布的 ActualHeight 和 ActualWidth,如下所示:

Height="Binding ElementName=MainCanvas, Path=ActualHeight"
Width="Binding ElementName=MainCanvas, Path=ActualWidth"

画布面板永远不会告诉孩子相对于他们的尺寸大小,即使孩子被设置为 Horizo​​ntalAlignment.Stretch(或垂直)。所以绑定在这里是一个很好的解决方案。

【讨论】:

非常感谢乔希!我需要 ActualHeight/ActualWidth 而不是 Height/Width。

以上是关于WPF - 如何将边框停靠在画布上?的主要内容,如果未能解决你的问题,请参考以下文章

如何让用户在 WPF 中使用画布绘制线条

如何使用 C# 在画布上的 WPF 中绘制透明 PNG

将 Canvas 停靠在其父级中

如何将边框半径应用于像 div 这样的画布元素以使其成为圆形?

动态数据显示 - WPF - 需要将文本添加到画布 - C#

WPF:将文件拖放到整个窗口中(包括标题栏和窗口边框)