这似乎是一个简单的问题,但我已经尝试了一个小时,似乎无法弄清楚。
我要做的就是用画布填充 MainWindow。我找不到任何允许这样做的属性,我能想到的唯一方法是 set 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}"
当您调整窗口大小时,它应该会相应更改
在 WPF 中,您可以通过将项目放置在 DockPanel 中并使用 Dock 继承属性来进行停靠。但是,如果您希望整个 Window 成为 Canvas,只需将 Window 的内容设置为画布,而不是另一种面板:
<Window ...>
<Canvas>
<!-- blah blah -->
</Canvas>
</Window>
没关系,看来您必须添加一个DockPanel
:
<DockPanel Name="dockPanel1">
<Canvas Name="canvas1" Background="White"></Canvas>
</DockPanel>