Wpf plein écran

Signaler
Messages postés
1
Date d'inscription
dimanche 21 août 2016
Statut
Membre
Dernière intervention
21 août 2016
-
Messages postés
16020
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
-
Bonjour,
j'ai utilisé WindowState="Maximized", ma fenêtre se met bien en plein écran mais les composants se déforme.
Pouvez-vous m'aider

Merci.

2 réponses

Messages postés
4
Date d'inscription
dimanche 18 septembre 2016
Statut
Membre
Dernière intervention
18 septembre 2016

cela peut t'aider ?

private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    if (e.ChangedButton == MouseButton.Left)
    {
        switch (WindowState)
        {
            case (WindowState.Maximized):
            {
                ResizeMode = ResizeMode.CanResize; 
                WindowStyle = WindowStyle.SingleBorderWindow;
                WindowState = WindowState.Normal;
                break;
            }
            case (WindowState.Normal):
            {
                ResizeMode = ResizeMode.NoResize;
                WindowStyle = WindowStyle.None;
                WindowState = WindowState.Maximized;
                break;
            }
        }
    }
}


<.ExeDEV>

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Messages postés
16020
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
549
Bonjour DevExe, je ne pense pas que ton code réponde au besoin de trkaan9.

Je cite
mais les composants se déforme.
, y a rien dans ton code qui gère les composants
Messages postés
16020
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
549
C'est dans le xaml qu'il faut gérer le comportement attendu lors d'un resize

Exemple 1
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Label Content="Nom" HorizontalAlignment="Left" Height="28" Margin="27,35,0,0" VerticalAlignment="Top" Width="54"/>
        <Label Content="Adresse" HorizontalAlignment="Left" Height="27" Margin="27,68,0,0" VerticalAlignment="Top" Width="54"/>
        <Label Content="Code postal" HorizontalAlignment="Left" Height="27" Margin="22,101,0,0" VerticalAlignment="Top" Width="78"/>
        <Label Content="Ville" HorizontalAlignment="Left" Height="27" Margin="211,101,0,0" VerticalAlignment="Top" Width="61" RenderTransformOrigin="0.525,0.148"/>
        <TextBox HorizontalAlignment="Left" Height="28" Margin="105,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="402"/>
        <TextBox HorizontalAlignment="Left" Height="28" Margin="105,68,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="402"/>
        <TextBox HorizontalAlignment="Left" Height="28" Margin="255,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="252"/>
        <TextBox HorizontalAlignment="Left" Height="28" Margin="105,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="106" RenderTransformOrigin="0.476,1.786"/>

    </Grid>
</Window>


Dans cet exemple, j'ai posé les contrôle sur la Window avec leur comportement par défaut, on voit que les champs Height et Width ont une valeur, ainsi que des alignements Top et Left.

Du coup, en cas de resize, chaque composant garde sa taille initiale et sa position par rapport au coin haut gauche.


Si je veux que le label Ville et son textbx restent attaché au coin bas droit, il faut modifier l'alignement et les marges
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
        MouseDoubleClick="Window_MouseDoubleClick">
    <Grid>
        <Label Content="Nom" HorizontalAlignment="Left" Height="28" Margin="27,35,0,0" VerticalAlignment="Top" Width="54"/>
        <Label Content="Adresse" HorizontalAlignment="Left" Height="27" Margin="27,68,0,0" VerticalAlignment="Top" Width="54"/>
        <Label Content="Code postal" HorizontalAlignment="Left" Height="27" Margin="22,101,0,0" VerticalAlignment="Top" Width="78"/>
        <Label Content="Ville" HorizontalAlignment="Right" Height="27" Margin="0,0,240,183" VerticalAlignment="Bottom" Width="61" />
        <TextBox HorizontalAlignment="Left" Height="28" Margin="105,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="402"/>
        <TextBox HorizontalAlignment="Left" Height="28" Margin="105,68,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="402"/>
        <TextBox HorizontalAlignment="Right" Height="28" Margin="0,0,10,183" TextWrapping="Wrap" VerticalAlignment="Bottom" Width="252"/>
        <TextBox HorizontalAlignment="Left" Height="28" Margin="105,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="106" />

    </Grid>
</Window>


Si tu veux que les textbox Nom et Adresse prennent toute la largeur, il ne faut pas de width ou width Auto et l'alignement Strecth, ce sont les marges qui feront foie.
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
        MouseDoubleClick="Window_MouseDoubleClick">
    <Grid>
        <Label Content="Nom" HorizontalAlignment="Left" Height="28" Margin="27,35,0,0" VerticalAlignment="Top" Width="54"/>
        <Label Content="Adresse" HorizontalAlignment="Left" Height="27" Margin="27,68,0,0" VerticalAlignment="Top" Width="54"/>
        <Label Content="Code postal" HorizontalAlignment="Left" Height="27" Margin="22,101,0,0" VerticalAlignment="Top" Width="78"/>
        <Label Content="Ville" HorizontalAlignment="Right" Height="27" Margin="0,0,240,191" VerticalAlignment="Bottom" Width="61"/>
        <TextBox HorizontalAlignment="Stretch" Height="28" Margin="105,35,10,10" TextWrapping="Wrap" VerticalAlignment="Top" Width="Auto"/>
        <TextBox HorizontalAlignment="Stretch" Height="28" Margin="105,68,10,0" TextWrapping="Wrap" VerticalAlignment="Top"/>
        <TextBox HorizontalAlignment="Right" Height="28" Margin="0,0,10,191" TextWrapping="Wrap" VerticalAlignment="Bottom" Width="252"/>
        <TextBox HorizontalAlignment="Left" Height="28" Margin="105,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="106"/>

    </Grid>
</Window>



Même principe si tu veux que le TextBox Adresse prenne toute la hauteur disponible
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
        MouseDoubleClick="Window_MouseDoubleClick">
    <Grid>
        <Label Content="Nom" HorizontalAlignment="Left" Height="28" Margin="27,35,0,0" VerticalAlignment="Top" Width="54"/>
        <Label Content="Adresse" HorizontalAlignment="Left" Height="27" Margin="27,68,0,0" VerticalAlignment="Top" Width="54"/>
        <Label Content="Code postal" HorizontalAlignment="Left" Height="27" Margin="22,101,0,191" VerticalAlignment="Bottom" Width="78"/>
        <Label Content="Ville" HorizontalAlignment="Left" Height="27" Margin="211,0,0,192" VerticalAlignment="Bottom" Width="61"/>
        <TextBox HorizontalAlignment="Stretch" Height="28" Margin="105,35,10,10" TextWrapping="Wrap" VerticalAlignment="Top" Width="Auto"/>
        <TextBox HorizontalAlignment="Stretch" Margin="105,68,10,225" TextWrapping="Wrap" VerticalAlignment="Stretch"/>
        <TextBox HorizontalAlignment="Stretch" Height="28" Margin="250,0,10,191" TextWrapping="Wrap" VerticalAlignment="Bottom"/>
        <TextBox HorizontalAlignment="Left" Height="28" Margin="105,101,0,191" TextWrapping="Wrap" VerticalAlignment="Bottom" Width="106"/>

    </Grid>
</Window>