Ich arbeite an einer Anwendung C# WPF. Ich habe meine eigene Titelleiste und habe die Funktion "Schließen", "Minimieren" und "Maximieren" programmiert. Ich arbeite am PC mit 2 Bildschirmen und ich habe ein Problem, wenn ich Fenster maximiere. Im Hauptbildschirm, wenn ich WindowState = WindowState.Maximized
eingestellt habe, ist die Taskleiste (die Leiste von Windows 7) ausgeblendet. Ich habe eine Funktion hinzugefügt, um MaxHeight abhängig vom Bildschirm einzustellen, aber wenn ich MaxHeight ändere, ändert sich die ActualHeight nicht. Konkret, wenn ich das Fenster maximiere, wird das Fenster im Vollbildmodus angezeigt. Beim zweiten Mal, wenn ich maximiere, ist die Höhe korrekt, die Taskleiste ist nicht ausgeblendet.Ändern von Windows.MaxHeight nicht Höhe ändern
Was kann ich tun, um die Höhe zu aktualisieren, wenn MaxHeight geändert wird?
Hier ist mein Code:
protected override void OnStateChanged(EventArgs e)
{
base.OnStateChanged(e);
if (WindowState == WindowState.Maximized)
{
var hwnd = new System.Windows.Interop.WindowInteropHelper(this).EnsureHandle();
var currentMonitor = NativeMethods.MonitorFromWindow(hwnd, NativeMethods.MONITOR_DEFAULTTONEAREST);
var primaryMonitor = NativeMethods.MonitorFromWindow(IntPtr.Zero, NativeMethods.MONITOR_DEFAULTTOPRIMERTY);
var isInPrimary = currentMonitor == primaryMonitor;
if (isInPrimary)
this.MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
else
this.MaxHeight = Double.PositiveInfinity;
#if DEBUG
var aH = this.ActualHeight;
var h = this.Height;
var mH = this.MaxHeight;
if (aH != h || aH > mH)
{
System.Diagnostics.Debugger.Break();
this.Height = this.MaxHeight;
}
#endif
}
}
Das Ändern der Height-Eigenschaft in einem maximierten Fenster kann keine Auswirkungen haben. Die Einstellung von MaxHeight * nach * Maximierung des Fensters kann keinen Einfluss haben, Sie müssen es tun * bevor * es maximiert wird. Google "wpf vermeiden Taskleiste Überlappung auf randlosen Fenster", um herauszufinden, wie es richtig geht. –
In der Tat, ich habe dieses Stück Code vor dem Maximieren bewegen und es funktioniert gut. Vielen Dank ! –