11
votes

Docking / Remplissage dans WPF

Cela semble être une question aussi simple, mais j'ai essayé d'une heure et je ne peux pas sembler la comprendre.

Tout ce que je veux faire est de remplir le Wwindow avec une toile. Je n'ai pas pu trouver de propriétés pour permettre cela, et la seule façon de penser à le faire est de définir canvas.width / hauteur = mainwindow.width / hauteur , mais je devrais faire que chaque fois que la fenêtre est redimensionnée.

dans WinForms Docking Un élément dans un conteneur parent était facile.


0 commentaires

4 Réponses :


21
votes

Il suffit de définir la toile. HorizontalalInGIGNEMENT et verticalalignment à "étirer". Cela provoquera que la toile remplisse l'espace disponible à partir de son élément d'interface utilisateur. Assurez-vous de ne pas spécifier explicitement de largeur / hauteur explicitement.

in xaml, il s'agit simplement de: xxx


4 commentaires

Et assurez-vous simplement que vous n'avez pas défini explicitement les propriétés de largeur / hauteur sur votre canevas.


Cela marche. Je sais que je l'ai essayé plus tôt et que cela ne fonctionnait pas, mais qui sait. Merci. --Edit: j'ai probablement réglé la largeur / la hauteur.


Meilleur. Ne dépend de rien d'autre.


Il ne fonctionne pas si la toile est des articles de l'article de l'articleControl!



3
votes

Mettez ceci pour votre largeur de toile et votre hauteur dans XAML.

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


1 commentaires

Comment ça va? Je pense que la réponse d'Eric est plus simple / robuste que de faire ce genre de liaison.



0
votes

Nevermind, il semble que vous devez ajouter un dockpanel : xxx


3 commentaires

Il y a beaucoup de façons de faire cela. Celui-ci est un peu surkill, mais fonctionnera bien.


Conseil: Ne laissez pas ces noms générés automatiquement sur vos contrôles. Donnez-leur des noms significatifs. Vous serez plus heureux lorsque vous n'avez pas à vérifier si le numéro de la plaque d'immatriculation est dans Textbox23 ou Textbox17. Mieux encore, ne les nommez pas du tout si vous n'avez pas besoin de vous référer à ceux-ci: les noms WPF sont facultatifs.


@Martinho, je ne savais pas que les noms étaient facultatifs. Cela convient. Merci.



3
votes

Dans WPF, vous pouvez faire de l'amarrage en plaçant vos objets dans un quai et en utilisant la propriété héritée du quai. Toutefois, si vous voulez que toute la fenêtre soit une toile, faites-le simplement que le contenu de la fenêtre soit la toile, et non un autre type de panneau:

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


0 commentaires