如何Canvas
以可变宽度完全水平拉伸?这是父母Canvas
,所以它没有父母,只有孩子。
XAML 源:它显示在混合 http://resopollution.com/xaml.txt
如何Canvas
以可变宽度完全水平拉伸?这是父母Canvas
,所以它没有父母,只有孩子。
XAML 源:它显示在混合 http://resopollution.com/xaml.txt
使用 aGrid
作为 UI 中的顶级元素 - 它会拉伸以填充其容器。然后在里面放一个Canvas
with ,它会按照你想要的方式运行。HorizontalAlignment="Stretch"
Grid
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas Background="Blue"/>
</Grid>
这对我有用。关键是您的顶级 UI 元素。虽然Grid
默认情况下 a 会填充所有可用空间,但Canvas
es 仅占用其内容所需的空间。
我猜你已经试过了
canvas.HorizontalAlignment = HorizontalAlignment.Stretch
如果这不起作用,那么您可以做的是将画布的 and 属性Width
绑定到包含窗口的and属性。Height
ActualWidth
ActualHeight
问题是您正在指定Height
and Width
。如果没有这些属性,控件可能会在设计器中消失,但是当您将画布插入另一个控件时,它的大小应该适当。
如果我没记错的话,WPF 的下一个版本将具有“DesignWidth”和“DesignHeight”属性,它们允许您在设计器中显示具有给定大小的控件,而不会在插入其他控件时影响其测量值。
您可以使用停靠面板来填充可用宽度。停靠面板控件列表中的最后一项会自动拉伸以填充剩余空间。
<DockPanel>
<Canvas />
</DockPanel>
除非您手动设置高度和/或宽度,否则画布应自动执行此操作。你想把画布放在什么样的控件上?你可以发布你的代码吗?