web-dev-qa-db-fra.com

Rendre mon application wpf en plein écran (Barre de tâches Couverture et barre de titre de la fenêtre)

Je souhaite que mon application puisse être agrandie en plein écran, masquant ainsi la barre des tâches Windows et la barre de titre. Et cela devrait déclenché par un bouton.

J'essaie de développer la fenêtre de mon application comme celle-ci .enter image description here

Ajouter mon extrait de code ci-dessous

 <controls:MetroWindow x:Class="EDUI.MainWindow"
            xmlns:controls="clr-namespace:MahApps.Metro.Controls;Assembly=MahApps.Metro"
            xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
            xmlns:local="clr-namespace:EDiscoveryCore;Assembly=EDiscoveryCore"
            xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
            Title="eDi"  BorderBrush="SkyBlue" BorderThickness="2" Height="999" Width="1071" WindowState="Maximized" x:Name="MainWindows">
13
Sowvik Roy

Essaye ça:

<Window ShowTitleBar="False" IgnoreTaskbarOnMaximize="True">
9
Sowvik Roy

Vous devez définir WindowStyle sur none et WindowState sur Maximized.

<Window ...    
 WindowStyle="None"   
 WindowState="Maximized">
18
Manish Parakhiya

Vous devez définir ResizeMode sur NoResize et WindowState sur Maximized.

  <Window ...    
    ResizeMode="NoResize" WindowState="Maximized">
12
Narek

Si la barre des tâches ne disparaît pas, il peut être utile de changer la visibilité de la fenêtre avant et après le changement de style de la fenêtre, comme ceci:

    private void MainWindow_StateChanged(object sender, EventArgs e) {
        if (this.WindowState == WindowState.Maximized) {
            // hide the window before changing window style
            this.Visibility = Visibility.Collapsed;
            this.Topmost = true;
            this.WindowStyle = WindowStyle.None;
            this.ResizeMode = ResizeMode.NoResize;
            // re-show the window after changing style
            this.Visibility = Visibility.Visible;
        }
        else {
            this.Topmost = false;
            this.WindowStyle = WindowStyle.SingleBorderWindow;
            this.ResizeMode = ResizeMode.CanResize;
        }
    }
5
mch

Il vous suffit de définir le WindowStyle sur none:

<Window ...
    WindowStyle="None">
3
Romano Zumbé

Étape 1: Écrire une classe avec des méthodes statiques Hide () et Show () pour la barre des tâches

public class Taskbar
{
    [DllImport("user32.dll")]
    private static extern int FindWindow(string className, string windowText);
    [DllImport("user32.dll")]
    private static extern int ShowWindow(int hwnd, int command);

    private const int SW_HIDE = 0;
    private const int SW_SHOW = 1;

    protected static int Handle
    {
        get
        {
            return FindWindow("Shell_TrayWnd", "");
        }
    }

    private Taskbar()
    {
        // hide ctor
    }

    public static void Show()
    {
        ShowWindow(Handle, SW_SHOW);
    }

    public static void Hide()
    {
        ShowWindow(Handle, SW_HIDE);
    }
}

Étape 2: connexion à la fenêtre Evénement de fermeture pour récupérer la barre des tâches lorsque la fenêtre se ferme avec Alt + F4

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    Taskbar.Show();
}

Masquer la barre des tâches et afficher en plein écran:

Taskbar.Hide();
WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;
ResizeMode = ResizeMode.NoResize;
Width = System.Windows.SystemParameters.PrimaryScreenWidth;
Height = System.Windows.SystemParameters.PrimaryScreenHeight;
Topmost = true;
Left = 0;
Top = 0;

Afficher la barre des tâches et exécuter dans la fenêtre

Taskbar.Show();
WindowStyle = WindowStyle.SingleBorderWindow;
WindowState = WindowState.Normal;
ResizeMode = ResizeMode.CanResize;
Width = System.Windows.SystemParameters.WorkArea.Width-100;
Height = System.Windows.SystemParameters.WorkArea.Height-100;
Topmost = false;
Left = 0;
Top = 0;

Testé sous Windows 10 1703 (Mise à jour des créateurs)

 enter image description here

J'ai eu ce problème avec la barre des tâches restant au-dessus de ma fenêtre. La solution actuelle que j'utilise consiste à définir la fenêtre sur Topmost pour une courte période, puis à la redonner à false (je veux que ma fenêtre fonctionne correctement avec Alt + Tab)

private Timer t;
public void OnLoad()
    {
        var window = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive);
        StartTopmostTimer(window);
    }

    private void StartTopmostTimer(Window window)
    {
        t = new Timer(o => SetTopMostFalse(window), null, 1000, Timeout.Infinite);
    }

    private void SetTopMostFalse(Window window)
    {
        Application.Current.Dispatcher.BeginInvoke(new Action(() =>
        {
            window.Topmost = false;
        }));
        t.Dispose();
    }

J'utilise également ce code pour basculer entre le mode plein écran et le mode fenêtre:

public void SwitchFullScreen()
    {
        var window = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive);

        if (window != null)
        {
            if (window.WindowStyle == WindowStyle.None)
            {
                window.WindowStyle = WindowStyle.SingleBorderWindow;
                window.WindowState = state;
            }
            else
            {
                state = window.WindowState;
                window.WindowStyle = WindowStyle.None;
                window.WindowState = WindowState.Maximized;
                window.Topmost = true;
                StartTopmostTimer(window);
            }
        }
    }
1
Mihai Drebot

Il suffit de connecter ce gestionnaire d’événements à l’événement Loaded du formulaire, qui fonctionne correctement. 
N'appliquez pas ce genre de choses dans le constructeur du formulaire (ce qui ne fonctionnera pas pour moi). 

    private void aWindow_Loaded(object sender, RoutedEventArgs e)
    {
        MaxHeight = SystemParameters.FullPrimaryScreenHeight;
        MaxWidth = SystemParameters.FullPrimaryScreenWidth;
        Width = SystemParameters.FullPrimaryScreenWidth;
        Height = SystemParameters.FullPrimaryScreenHeight;
        WindowState = WindowState.Maximized;
        ResizeMode = ResizeMode.NoResize;
        Left = 0;
        Top = 0;
        Topmost = true;
        ShowInTaskbar = false;

        //throw new NotImplementedException();
    }
0
user1779049