webentwicklung-frage-antwort-db.com.de

Meine WFP-Anwendung im Vollbildmodus erstellen (Taskleiste und Titelleiste des Fensters)

Ich möchte meine Anwendung so gestalten, dass sie auf Vollbild maximiert werden kann, dh die Windows-Taskleiste und die Titelleiste ausblenden. Und es sollte durch einen Knopf ausgelöst werden.

Ich versuche, mein Anwendungsfenster so zu entwickeln ...enter image description here

Fügen Sie unten mein Code-Snippet hinzu

 <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

Versuche dies:

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

Sie müssen WindowStyle auf none sowie WindowState auf Maximized setzen

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

Sie müssen ResizeMode auf NoResize und WindowState auf Maximized setzen

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

Wenn die Taskleiste nicht ausgeblendet wird, kann es hilfreich sein, die Sichtbarkeit des Fensters vor und nach dem Ändern des Fensterstils wie folgt zu ändern:

    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

Sie müssen nur den WindowStyle auf none setzen:

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

Schritt 1: Klasse mit statischen Methoden Hide () und Show () für die Taskleiste schreiben

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);
    }
}

Schritt 2: Verbinden Sie sich mit Fenster Schließen-Ereignis, um die Taskleiste wieder anzuzeigen, wenn das Fenster mit Alt + F4 geschlossen wird

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

Taskleiste ausblenden und Vollbild anzeigen:

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;

Taskleiste anzeigen und im Fenster ausführen

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;

Getestet unter Windows 10 1703 (Creators Update)

 enter image description here

Ich hatte dieses Problem mit der Taskleiste auf meinem Fenster. Die aktuelle Lösung, die ich verwende, besteht darin, das Fenster für eine kurze Zeit als oberstes Fenster festzulegen und dann wieder auf "falsch" zu setzen.

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();
    }

Ich verwende diesen Code auch, um zwischen dem Vollbildmodus und dem Fenstermodus zu wechseln:

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

Hängen Sie diesen Ereignishandler einfach an das Loaded-Ereignis des Formulars an. Das funktioniert einwandfrei. 
Wenden Sie dieses Zeug nicht im Konstruktor des Formulars an (was für mich nicht funktioniert). 

    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