Question

Cela semble être question si simple, mais je l'ai essayé pendant une heure et ne peut pas sembler comprendre.

Tout ce que je veux faire est de remplir le MainWindow avec une toile. Je ne pouvais pas trouver des propriétés pour permettre cela, et la seule façon que je pouvais penser à faire est de Canvas.Width/Height = MainWindow.Width/Height ensemble, mais je dois le faire à chaque fois que la fenêtre est redimensionnée.

Dans WinForms accostant un élément dans un conteneur parent était facile.

Était-ce utile?

La solution

Il suffit de régler le canevas. HorizontalAlignment et VerticalAlignment pour "stretch". Cela entraînera le canevas pour remplir l'espace disponible à partir de son contenant élément interface utilisateur. Assurez-vous de ne pas spécifier la largeur / hauteur explicitement.

En XAML, c'est juste:

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

Autres conseils

mettre ce pour votre largeur de toile et de la hauteur en XAML.

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

il devrait changer en conséquence lorsque vous redimensionnez la fenêtre

Dans WPF vous pouvez faire docking en plaçant vos articles dans un DockPanel et en utilisant le Dock propriété héritée. Toutefois, si vous voulez que la fenêtre entière comme une toile, juste faire en sorte le contenu de la fenêtre est la toile, et pas un autre type de panneau:

<Window ...>
    <Canvas>
        <!-- blah blah -->
    </Canvas>
</Window>

Pas grave, il semble que vous devez ajouter un DockPanel:

<DockPanel Name="dockPanel1">
    <Canvas Name="canvas1" Background="White"></Canvas>
</DockPanel>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top