Wpf plein écran

trkaan9 Messages postés 1 Date d'inscription dimanche 21 août 2016 Statut Membre Dernière intervention 21 août 2016 - 21 août 2016 à 02:48
Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 - 18 sept. 2016 à 10:48
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

ExeDev Messages postés 4 Date d'inscription dimanche 18 septembre 2016 Statut Membre Dernière intervention 18 septembre 2016
Modifié par NHenry le 18/09/2016 à 15:03
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.
0
Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 656
18 sept. 2016 à 10:13
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
0
Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 656
18 sept. 2016 à 10:48
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>

0
Rejoignez-nous