Док - /заполнять в WPF

Это кажется таким простым вопросом, но я пытаюсь в течение часа и, похоже, не могу понять.

все, что я хочу сделать, это заполнить окно холстом. Я не мог найти никаких свойств, чтобы позволить это, и единственный способ, который я мог придумать, это установить Canvas.Width/Height = MainWindow.Width/Height, но мне придется делать это каждый раз, когда окно изменяется.

в WinForms стыковка элемента в Родительском контейнере была простой.

4 ответов


просто установите холст.поле HorizontalAlignment и имеет "растянуть". Это заставит холст заполнить пространство, доступное из него, содержащего элемент UI. Просто не указывайте ширину / высоту явно.

в XAML, это просто:

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

в WPF можно выполнить стыковку, поместив элементы в DockPanel и используя унаследованное свойство Dock. Однако, если вы хотите, чтобы все окно было холстом, просто сделайте так, чтобы содержимое окна было холстом, а не другой панелью:

<Window ...>
    <Canvas>
        <!-- blah blah -->
    </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>