水平拉伸WPF画布

时间:2009-06-03 19:10:22

标签: wpf silverlight canvas wpf-controls stretch

如何使用可变宽度水平完全展开Canvas拉伸?这是父Canvas,所以它没有父母,只有孩子。

XAML来源:它以混合形式显示 http://resopollution.com/xaml.txt

5 个答案:

答案 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

如果这不起作用,那么您可以做的是将画布的WidthHeight属性绑定到包含的ActualWidthActualHeight属性窗口。

答案 2 :(得分:1)

您可以使用停靠面板来填充可用宽度。停靠面板控件列表中的最后一项将自动拉伸以填充剩余空间。

<DockPanel>
   <Canvas />
</DockPanel>

答案 3 :(得分:1)

除非您手动设置高度和/或宽度,否则画布应自动执行此操作。你试图将画布放在什么样的控制上?你可以发布你的代码吗?

答案 4 :(得分:1)

问题在于您指定的是HeightWidth。如果没有这些属性,控件可能会在设计器中消失,但是当您将画布插入另一个控件时,它应该适当地调整大小。

如果我没记错的话,WPF的下一个版本将具有'DesignWidth'和'DesignHeight'属性,允许您在设计器中显示给定大小的控件,而不会在插入其他控件时影响它的测量。