web-dev-qa-db-fra.com

c # WPF comment définir l’emplacement, la largeur et la hauteur des contrôles par programme?

je fais ma première application WPF. J'ai un problème avec lequel lorsque mes formulaires sont maximisés ou en plein écran, mes contrôles ne seront pas redimensionnés et resteront au même endroit. seule la forme est maximisée.

dans winform, je peux faire le réglage dans le .cs comme suit:

panel6.Width
panel6.Height
panel6.Location

cela m'aidera à le définir si ma forme est maximisée.Je le fais en utilisant des arithmétiques où j'obtiens la résolution de l'écran et des calculs, puis j'obtiens la valeur et je peux la régler sur la largeur, la hauteur et l'emplacement. MAIS CEC IS IN WINFORM.

comment vais-je aborder ce problème pour maximiser et plein écran dans WPF? y a-t-il un moyen de procéder par le biais du fichier .cs par programme? ou WPF propose-t-il un contrôle intégré simple pour résoudre ce problème?

supposons pour cet exemple que j'utilise dockpanel dans le fichier WPF.

il sera inutile si la fenêtre est maximisée mais les autres contrôles restent.

des idées?

8
Psychocryo

Pour définir Largeur et Hauteur :

dockpanel1.width = 230;
dockpanel1.height = 230;

comme pour l'emplacement, wpf utilise Marge :

dockpanel1.Margin = new Thickness(0,440,836,40);
23
Psychocryo

Il est possible de déplacer par programme des éléments enfants sur un canevas.

En xaml:

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>

En C #:

Canvas.SetTop(YourElement, newX);
Canvas.SetLeft(YourElement, newY);
10
Roger Lew

Utilisez des calculs tels que (taille précédente de la position du contrôle * nouvelle mise en page)/taille précédente de la mise en page = nouvelle position du contrôle

Mais le moyen le plus simple consiste à utiliser XAML Utiliser la grille et à y insérer des colonnes et des lignes et à définir la taille des colonnes et des lignes sur il. Et vous pouvez même avoir des contrôles redimensionnables automatiquement en définissant simplement les marges des contrôles en colonnes et en lignes. N'oubliez pas les alignements horizontaux et verticaux définis pour s'étirer.

2
Eftekhari

Pour votre problème spécifique, vous recommandons d’utiliser un DockPanel et d’y placer vos contrôles. Voici le premier résultat bing: Tutoriel WPF | Panneau de quai

Et comme déjà suggéré par flq et blindmeis, étudiez les panneaux de présentation. Cela vous simplifiera vraiment la vie dans WPF.

1
publicgk

Si vous souhaitez positionner explicitement vos éléments enfants, utilisez le panneau Canevas.

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>
0
Navid Rahmani

vous devriez regarder tous les différents panneaux de présentation dans wpf (Grid, DockPanel, StackPanel, Canvas ...)

par conséquent, si vous définissez des propriétés pour votre Panel, celui-ci se comportera différemment si votre LayoutPanel change.

0
blindmeis