9

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

XAML 源:它显示在混合 http://resopollution.com/xaml.txt

4

5 回答 5

15

使用 aGrid作为 UI 中的顶级元素 - 它会拉伸以填充其容器。然后在里面放一个Canvaswith ,它会按照你想要的方式运行。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 会填充所有可用空间,但Canvases 仅占用其内容所需的空间。

于 2009-06-03T19:29:51.607 回答
4

我猜你已经试过了
canvas.HorizontalAlignment = HorizontalAlignment.Stretch

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

于 2009-06-03T19:18:42.173 回答
1

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

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

于 2009-06-03T20:05:42.330 回答
1

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

<DockPanel>
   <Canvas />
</DockPanel>
于 2009-06-03T19:12:35.180 回答
1

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

于 2009-06-03T19:16:18.293 回答