2017-06-13 2 views
1

Ich habe Probleme mit meiner App Vollbild auf eine Weise, die Taskleiste abdeckt. Der Code ist seit Jahren unverändert und funktioniert gut in Windows 7, aber nun zu Windows 10 wechseln Ich sehe, dass auf verschiedenen Maschinen das Verhalten anders ist.Machen WPF-Anwendung Vollbild (Abdeckung Taskleiste) zuverlässig

Hier ist, was auf einigen Rechnern passiert:

enter image description here

Es soll von Rand werden fullsrceen ohne Taskleiste umranden und stattdessen gibt es eine halbtransparente Taskleiste. Wenn ich in den Fenstermodus umschalte, wird die Größe nicht verkleinert und die Taskleiste ist nicht mehr transparent. In beiden Fällen wird ein Teil des Bildschirms von der Taskleiste abgedeckt.

Hier ist mein Code:

<controls:MetroWindow x:Class="A...MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 
    xmlns:views="clr-namespace:App.Views" 
    xmlns:controls1="clr-namespace:App.Controls" 
    Title="App" 
    Height="768" 
    Width="1024" 
    IgnoreTaskbarOnMaximize="True" // 
    WindowStyle="None"    // This should do the trick 
    WindowState="Maximized"   // 
    DataContext="{Binding MainWindowViewModel, Source={StaticResource ViewModelLocator}}" 

Ich habe this und this aber es ist nicht der Trick zu tun. Ist es möglich, dass die Einstellung der Größe etwas damit zu tun hat? Ich finde es komisch, dass es auf meinem Dev-PC funktioniert, aber auf einigen anderen Maschinen bekomme ich das beschriebene Verhalten.

+1

Versucht, ResizeMode = "NoResize" zu setzen? – Evk

+0

Ich habe es versucht, aber im Allgemeinen möchte ich dort die Größe ändern. Das Problem ist, wenn es auf verschiedenen PCs anders geht. –

Antwort

2

Nun, wenn nicht jener Arbeit, ich denke, man Topmost="True"

verwenden sollten, Und wenn Sie es den anderen Anwendungen nicht stören wollen, wenn WindowState = Normal, können Sie diese Ereignisse zu Ihrem Fenster hinzufügen:

private void Window_Activated(object sender, EventArgs e) 
{ 
    // When window got focused 
    Topmost = true; 
} 

private void Window_Deactivated(object sender, EventArgs e) 
{ 
    // When window lost focus 
    Topmost = false; 
}