2009-06-03 116 views

回答

14

使用Grid作为UI中的顶级元素 - 它将伸展以填充其容器。然后将CanvasHorizontalAlignment="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

你可以使用一个固定面板得到它填补了可用宽度。控制面板控件列表中的最后一项会自动拉伸以填充剩余空间。

<DockPanel> 
    <Canvas /> 
</DockPanel> 
+0

有没有快速的方法来做标签? – resopollution 2009-06-03 19:14:24

+0

我尝试删除高度和宽度属性,但一切都消失了。 – resopollution 2009-06-03 19:22:45

1

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

+0

我已经发布了我的代码。画布是整个应用程序的主要父元素。 – resopollution 2009-06-03 19:21:52

+0

我尝试删除高度和宽度属性,但一切都消失了。 – resopollution 2009-06-03 19:22:54

4

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

如果这不起作用,你可以做的又是什么绑定画布的WidthHeight属性含有的ActualWidthActualHeight性质窗口。

1

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

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