Стыковка / Заполнение в WPF - PullRequest
       19

Стыковка / Заполнение в WPF

10 голосов
/ 12 января 2011

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

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

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

Ответы [ 4 ]

20 голосов
/ 12 января 2011

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

В XAML это просто:

<Window ...Other window props... >
    <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <!-- Canvas items here... -->
    </Canvas>
</Window>
3 голосов
/ 12 января 2011

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

<Window ...>
    <Canvas>
        <!-- blah blah -->
    </Canvas>
</Window>
3 голосов
/ 12 января 2011

укажите это для ширины и высоты холста в xaml.

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

должно измениться соответственно при изменении размера окна

0 голосов
/ 12 января 2011

Не важно, кажется, вам нужно добавить DockPanel:

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