【发布时间】:2011-06-08 00:31:06
【问题描述】:
这似乎是一个简单的问题,但我已经尝试了一个小时,似乎无法弄清楚。
我想要做的就是用 Canvas 填充 MainWindow。我找不到任何允许这样做的属性,我能想到的唯一方法是设置Canvas.Width/Height = MainWindow.Width/Height,但每次调整窗口大小时我都必须这样做。
在 WinForms 中,将元素停靠在父容器中很容易。
【问题讨论】:
这似乎是一个简单的问题,但我已经尝试了一个小时,似乎无法弄清楚。
我想要做的就是用 Canvas 填充 MainWindow。我找不到任何允许这样做的属性,我能想到的唯一方法是设置Canvas.Width/Height = MainWindow.Width/Height,但每次调整窗口大小时我都必须这样做。
在 WinForms 中,将元素停靠在父容器中很容易。
【问题讨论】:
只需将 Canvas.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>
【讨论】: