2017-06-13 1 views
1

J'ai des problèmes pour obtenir mon application en plein écran d'une manière qui couvre la barre des tâches. Le code a été inchangé depuis des années et fonctionne très bien dans Windows 7, mais maintenant, en passant à Windows 10, je vois que sur des machines différentes, le comportement est différent.Rendre l'application WPF en plein écran (couverture de la barre des tâches) de manière fiable

Voici ce qui se passe sur certaines machines:

enter image description here

Il est censé être fullsrceen de bord à bord sans barre des tâches et à la place il y a une barre des tâches semi-transparent. Si je passe en mode fenêtré, la taille n'est pas réduite et la barre des tâches n'est plus transparente. Les deux cas une partie de l'écran est couverte par la barre des tâches.

Voici mon 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}}" 

J'ai lu this et this mais son fait pas l'affaire. Est-il possible que le réglage de la taille ait quelque chose à voir avec cela? Je trouve ça bizarre que cela fonctionne bien sur mon pc dev, mais sur d'autres machines, j'ai le comportement décrit.

+1

Vous avez essayé de définir ResizeMode = "NoResize"? – Evk

+0

Je l'ai essayé, mais en général je veux qu'il y ait un redimensionnement. Le problème est quand il est fait différemment sur différents PC. –

Répondre

2

Eh bien, si non de ces travaux, je suppose que vous devez utiliser Topmost="True"

Et si vous ne voulez pas déranger les autres applications lorsque WindowState = Normal, vous pouvez ajouter ces événements à votre fenêtre:

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