这似乎是一个这样简单的问题,但我一直在尝试一个小时,似乎无法弄清楚。对接/填充WPF
我想要做的就是用Canvas填充MainWindow。我找不到任何属性来允许这样做,我唯一能想到的方法是设置Canvas.Width/Height = MainWindow.Width/Height
,但每当窗口大小调整时我都必须这样做。
在WinForms中,父容器中的元素很容易。
这似乎是一个这样简单的问题,但我一直在尝试一个小时,似乎无法弄清楚。对接/填充WPF
我想要做的就是用Canvas填充MainWindow。我找不到任何属性来允许这样做,我唯一能想到的方法是设置Canvas.Width/Height = MainWindow.Width/Height
,但每当窗口大小调整时我都必须这样做。
在WinForms中,父容器中的元素很容易。
只需设置画布。 HorizontalAlignment和VerticalAlignment为“拉伸”。这将导致Canvas填充其包含UI元素的可用空间。只要确保不明确指定宽度/高度。
在XAML中,这仅仅是:
<Window ...Other window props... >
<Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<!-- Canvas items here... -->
</Canvas>
</Window>
把这个在XAML画布宽度和高度。
Width="{Binding Path=ActualWidth, ElementName=Window1}"
Height="{Binding Path=ActualHeight, ElementName=Window1}"
当调整窗口
算了应该随之改变,好像你必须添加一个DockPanel
:
<DockPanel Name="dockPanel1">
<Canvas Name="canvas1" Background="White"></Canvas>
</DockPanel>
在WPF中你可以把你的项目里面做对接DockPanel并使用Dock继承的属性。然而,如果你想让整个窗口成为一个画布,只需使窗口的内容是画布,而不是另一种面板:
<Window ...>
<Canvas>
<!-- blah blah -->
</Canvas>
</Window>
而只是确保你没有设置宽度/高度属性显式地在您的画布上。 – RQDQ 2011-01-12 18:14:57
这有效。我知道我早些时候尝试过,但没有奏效,但是谁知道。谢谢。 - 编辑:我可能设置宽度/高度。 – Eric 2011-01-12 18:15:24
最好。不依赖于其他任何东西。 – 2011-01-12 18:16:51