2011-01-12 65 views
10

这似乎是一个这样简单的问题,但我一直在尝试一个小时,似乎无法弄清楚。对接/填充WPF

我想要做的就是用Canvas填充MainWindow。我找不到任何属性来允许这样做,我唯一能想到的方法是设置Canvas.Width/Height = MainWindow.Width/Height,但每当窗口大小调整时我都必须这样做。

在WinForms中,父容器中的元素很容易。

回答

20

只需设置画布。 HorizontalAlignmentVerticalAlignment为“拉伸”。这将导致Canvas填充其包含UI元素的可用空间。只要确保不明确指定宽度/高度。

在XAML中,这仅仅是:

<Window ...Other window props... > 
    <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <!-- Canvas items here... --> 
    </Canvas> 
</Window> 
+3

而只是确保你没有设置宽度/高度属性显式地在您的画布上。 – RQDQ 2011-01-12 18:14:57

+0

这有效。我知道我早些时候尝试过,但没有奏效,但是谁知道。谢谢。 - 编辑:我可能设置宽度/高度。 – Eric 2011-01-12 18:15:24

+0

最好。不依赖于其他任何东西。 – 2011-01-12 18:16:51

2

把这个在XAML画布宽度和高度。

Width="{Binding Path=ActualWidth, ElementName=Window1}" 
Height="{Binding Path=ActualHeight, ElementName=Window1}" 

当调整窗口

0

算了应该随之改变,好像你必须添加一个DockPanel

<DockPanel Name="dockPanel1"> 
    <Canvas Name="canvas1" Background="White"></Canvas> 
</DockPanel> 
3

在WPF中你可以把你的项目里面做对接DockPanel并使用Dock继承的属性。然而,如果你想让整个窗口成为一个画布,只需使窗口的内容是画布,而不是另一种面板:

<Window ...> 
    <Canvas> 
     <!-- blah blah --> 
    </Canvas> 
</Window>