11

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

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

在 WinForms 中,将元素停靠在父容器中很容易。

4

4 回答 4

21

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

在 XAML 中,这只是:

<Window ...Other window props... >
    <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <!-- Canvas items here... -->
    </Canvas>
</Window>
于 2011-01-12T18:10:38.247 回答
3

将此作为您的画布宽度和高度放在 xaml 中。

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

当您调整窗口大小时,它应该会相应更改

于 2011-01-12T18:10:55.113 回答
3

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

<Window ...>
    <Canvas>
        <!-- blah blah -->
    </Canvas>
</Window>
于 2011-01-12T18:14:17.747 回答
0

没关系,看来您必须添加一个DockPanel

<DockPanel Name="dockPanel1">
    <Canvas Name="canvas1" Background="White"></Canvas>
</DockPanel>
于 2011-01-12T18:13:39.200 回答