Сделайте мой wpf-приложение полноэкранным (панель задач и панель заголовка окна)

Я хотел бы сделать свое приложение таким, чтобы оно могло максимизироваться до полноэкранного режима, так как оно скрывает панель задач Windows и панель заголовка. И это должно срабатывать кнопкой.

Я пытаюсь разработать окно моего приложения, как это. enter image description here

Добавьте фрагмент кода ниже

 <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">

Ответ 1

Попробуйте следующее:

<Window ShowTitleBar="False" IgnoreTaskbarOnMaximize="True">

Ответ 2

Вам необходимо установить для WindowStyle значение none, а также WindowState для Maximized

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

Ответ 3

Вам необходимо установить ResizeMode в NoResize и WindowState для Maximized

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

Ответ 4

Если панель задач не исчезает, это может помочь изменить видимость окна до и после изменения стиля окна, например:

    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

Вам просто нужно установить для WindowStyle значение none:

<Window ...
    WindowStyle="None">

Ответ 6

У меня была эта проблема с панелью задач, стоящей поверх моего окна. В текущем решении я устанавливаю окно как Topmost в течение короткого времени, а затем устанавливаю его обратно на false (я хочу, чтобы мое окно хорошо работало с 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();
    }

Я также использую этот код для переключения между полноэкранным и оконным режимами:

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

Ответ 7

Шаг 1: Запишите класс со статическими методами Скрыть() и Показать() для панели задач

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

Шаг 2: Подключитесь к событию закрытия окна, чтобы вернуть панель задач, когда окно закроется с помощью Alt + F4

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

Скрыть панель задач и показать полноэкранный режим:

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;

Показать панель задач и запустить в окне

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;

Протестировано в Windows 10 1703 (обновление для авторов)

введите описание изображения здесь