Station d'accueil / Remplissage WPF
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.
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>