Ответ 1
Попробуйте следующее:
<Window ShowTitleBar="False" IgnoreTaskbarOnMaximize="True">
Я хотел бы сделать свое приложение таким, чтобы оно могло максимизироваться до полноэкранного режима, так как оно скрывает панель задач Windows и панель заголовка. И это должно срабатывать кнопкой.
Я пытаюсь разработать окно моего приложения, как это.
Добавьте фрагмент кода ниже
<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">
Попробуйте следующее:
<Window ShowTitleBar="False" IgnoreTaskbarOnMaximize="True">
Вам необходимо установить для WindowStyle значение none, а также WindowState для Maximized
<Window ...
WindowStyle="None"
WindowState="Maximized">
Вам необходимо установить ResizeMode в NoResize и WindowState для Maximized
<Window ...
ResizeMode="NoResize" WindowState="Maximized">
Если панель задач не исчезает, это может помочь изменить видимость окна до и после изменения стиля окна, например:
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;
}
}
Вам просто нужно установить для WindowStyle значение none:
<Window ...
WindowStyle="None">
У меня была эта проблема с панелью задач, стоящей поверх моего окна. В текущем решении я устанавливаю окно как 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);
}
}
}
Шаг 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 (обновление для авторов)