在WPF中停靠/填充

时间:2011-01-12 18:08:09

标签: wpf dock fill autofill

这似乎是一个简单的问题,但我已经尝试了一个小时,似乎无法弄明白。

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

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

4 个答案:

答案 0 :(得分:20)

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

在XAML中,这只是:

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

答案 1 :(得分:3)

将此画布宽度和高度设置为xaml。

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

当您调整窗口大小时,它应该相应地改变

答案 2 :(得分:3)

在WPF中,您可以通过将项目放在DockPanel中并使用Dock继承属性来进行对接。但是,如果您希望整个Window都是Canvas,那么只需将它设置为Window的内容就是画布,而不是另一种面板:

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

答案 3 :(得分:0)

没关系,似乎你必须添加DockPanel

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