11
votes

WPF Plein écran sur optimiser

Je veux fondamentalement que ma fenêtre WPF soit en mode plein écran, lorsque F11 est enfoncé ou que le bouton Maximizize dans le coin supérieur droit de la fenêtre est enfoncé.

tandis que les opèrent comme un charme pour appuyer sur F11 : xxx

Ceci affiche toujours la barre des tâches Windows (testée avec Windows 7): xxx

Qu'est-ce que je manque ici ? Ou puis-je le faire encore plus élégant?


0 commentaires

9 Réponses :


3
votes

6 commentaires

J'ai essayé le plus haut = true; et cela ne changera pas le comportement.


Question stupide. Comment puis-je vérifier si ma barre des tâches est définie sur "Haut le plus". Comme je l'ai dit, cela fonctionne bien (avec et sans le plus haut ) en appuyant sur f11.


Une bonne question, semble que vous ne pouvez pas changer cela sous Windows 7. Je vais faire d'autres tests et vous revenir à vous.


Merci, j'apprécierais vraiment ça. Ce comportement me conduit fou;)


Cela ne fonctionne pas pour moi - bizarrement, il clips partie de la barre des tâches mais pas le tout (serveur 2008 avec le thème Aero).


@Ilwlson: C'est exactement ce que j'ai avec Windows 7 aussi. Aussi Thème Aero, si cela a une importance.



0
votes

Vous pouvez masquer la barre des tâches si vous importez user32.dll ... xxx

utilisation: xxx


3 commentaires

Vous venez de détruire ma barre des tâches!


Merci kzen! De toute façon, cela ne tombe pas très WPF comme moi. Mais cela pourrait être une option.


Et cela vient de supprimer toutes mes icônes dans la barre des tâches, elle n'a pas retiré la barre des tâches elle-même.



21
votes

WPF semble prendre la décision de décider de devenir plein écran ou de respecter la barre des tâches en fonction du windowstyle au moment de la maximisation. Donc, une solution kludgy mais efficace consiste à basculer la fenêtre à non-maximisée, à régler le windowstyle, puis à remettre la fenêtre à nouveau à nouveau: xxx

Bien que le code soit manifestement moche, le La transition à la normale et à la suite de Maximisée ne semble pas rendre l'expérience utilisateur pire. Sur mon écran, j'ai remarqué que le scintillement avec le code F11 et le kludge optimisent, mais ne sont pas sensiblement pires sur l'optimisation de KLUDGE. Mais votre kilométrage peut varier!


3 commentaires

frappe frapper - qui est là? - un sémaphore à partir de '70. Nice cependant, ça marche. +1


Celui-ci fonctionne très bien. Même c'est moche, il se sent toujours mieux que la mise en œuvre de WindowInterOPER ou certaines importations de la DLL pour quelque chose de base comme le plein écran. Je dois y penser, généralement une bonne idée!


En fait, cela crée un effet visible laids dans la fenêtre XP, car les deux changements de Windowstate ont une représentation visuelle dans Windows XP, qui est une barre de titre bleue de haut en bas, donnant un attrait de fenêtre ivre avec cette technique.



0
votes

J'ai trouvé un moyen facile d'obtenir du plein écran dans WPF:

    private double LastHeight, LastWidth;
    private System.Windows.WindowState LastState;

    private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.F11)
        {
            if (WindowStyle != WindowStyle.None)
            {
                LastHeight = Height;
                LastWidth = Width;
                LastState = WindowState;

                Topmost = true;
                Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
                Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
                Top = 0;
                Left = 0;
                WindowState = System.Windows.WindowState.Normal;
                WindowStyle = WindowStyle.None;
                ResizeMode = System.Windows.ResizeMode.NoResize;
            }
            else
            {
                WindowStyle = WindowStyle.SingleBorderWindow;
                WindowState = LastState; ;
                ResizeMode = ResizeMode.CanResizeWithGrip;
                Topmost = false;
                Width = LastWidth;
                Height = LastHeight;
            }
        }
    }


1 commentaires

De cette façon ne fonctionne pas lorsque vous exécutez le programme sur une machine à double écran car le programme est toujours maximisé sur l'écran gauche.



3
votes

Une autre solution qui a fonctionné pour moi:

Vous pouvez définir la propriété MaxHeight de cette fenêtre pour SystemParameters.MaximizedPrimarycreenHeight à l'aide du constructeur. xxx

Avertissement: Cela pourrait ne pas fonctionner sur le bureau étendu.

Source: Maximiser la fenêtre avec le problème Windowstate (application va masquer la barre des tâches Windows)


0 commentaires

4
votes

Essayez ceci xxx

Vous pouvez voir que votre fenêtre couvre tout écran et masquera tout avec la barre des tâches Windows


1 commentaires

Travaillé mieux que n'importe quel autre sur Windows 10! (Mise à jour anniversaire)



1
votes

S'il y a toujours une personne qui nécessite un écran en plein essor clairement testé uniquement sur Windows 10! Dans Windows 10 minimisés, faites moins de scintillement si vous maintenez cette commande de code!

    public bool IsFullscreen = false;
    public WindowState lastWindowState;
    private void player_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        if (IsFullscreen)
        {
            this.WindowStyle = WindowStyle.SingleBorderWindow;
            this.WindowState = lastWindowState;
            IsFullscreen = false;

        }
        else
        {
            lastWindowState = this.WindowState;

            this.WindowStyle = WindowStyle.None;
            if (this.WindowState == WindowState.Maximized)
                this.WindowState = WindowState.Minimized;
            this.WindowState = WindowState.Maximized;
            IsFullscreen = true;
        }
    }


2 commentaires

Merci, fonctionnent bien sur Windows XP et Windows 7.


Un problème avec cette réponse est qu'il utilise Mousedoubleclick Event pendant la question de savoir comment modifier le comportement du bouton Maximize. Bien que cela fonctionne, il serait préférable que l'événement utilisé dans cet exemple change de manière à résoudre la question.



2
votes

Si vous utilisez WindowChrome Pour créer une expérience Chrome personnalisée, vous devez définir le verreframethickness à quelque chose d'autre que 0 (au moins c'était la dernière chose que je devais faire pour que la barre des tâches soit cachée derrière la fenêtre ). C'est en plus des étapes fournies dans la réponse acceptée.


0 commentaires

0
votes

Dans mon cas, la minimisation et la maximisation rendront la taille du plein écran pour être un peu plus gros que l'écran. L'alternative que j'ai trouvée est de définir temporairement la visibilité à effondrer puis de retourner à la fois visible pour forcer la redraine.

Visibility = Visibility.Collapsed;
WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;
ResizeMode = ResizeMode.NoResize;
Visibility = Visibility.Visible;


0 commentaires