如何使用可变宽度水平完全展开Canvas
拉伸?这是父Canvas
,所以它没有父母,只有孩子。
XAML来源:它以混合形式显示 http://resopollution.com/xaml.txt
答案 0 :(得分:14)
使用Grid
作为UI中的顶级元素 - 它会拉伸以填充其容器。然后将Canvas
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
会占用所有可用空间,但Canvas
只会占用内容所需的空间。
答案 1 :(得分:4)
我猜你已经尝试过了
canvas.HorizontalAlignment = HorizontalAlignment.Stretch
如果这不起作用,那么您可以做的是将画布的Width
和Height
属性绑定到包含的ActualWidth
和ActualHeight
属性窗口。
答案 2 :(得分:1)
您可以使用停靠面板来填充可用宽度。停靠面板控件列表中的最后一项将自动拉伸以填充剩余空间。
<DockPanel>
<Canvas />
</DockPanel>
答案 3 :(得分:1)
除非您手动设置高度和/或宽度,否则画布应自动执行此操作。你试图将画布放在什么样的控制上?你可以发布你的代码吗?
答案 4 :(得分:1)
问题在于您指定的是Height
和Width
。如果没有这些属性,控件可能会在设计器中消失,但是当您将画布插入另一个控件时,它应该适当地调整大小。
如果我没记错的话,WPF的下一个版本将具有'DesignWidth'和'DesignHeight'属性,允许您在设计器中显示给定大小的控件,而不会在插入其他控件时影响它的测量。