2017-01-04 4 views
-1

In meiner Anwendung, auf Menü klicken, starten wir ein Fenster. Während des Ladevorgangs wird das Fenster für einige Sekunden schwarz und dann erscheinen die Steuerelemente. Ich habe das Bild hier als Referenz beigefügt. Bitte hilf mir . enter image description here.Schwarzes leeres Fenster beim Laden eines Fensters WPF

+0

Ihre Frage ist fehlende Beschreibung des gewünschten Verhaltens – grek40

Antwort

0

Importieren und verwenden Sie die WindowChrome-Klasse (System.Windows.Shell) in Ihrem Projekt? Wenn ich diese Klasse in mein Projekt importiere, ist dieses Problem passiert.

+0

Nein. Wir verwenden in unserem Projekt nicht die WindowChrome-Klasse. Wir importieren jedoch [DllImport ("user32.dll")] –

+0

set AllowsTransparency = "True". Dies könnte Ihr Problem beheben. –

+0

Ich habe versucht, den obigen Code zu verwenden, immer noch nicht wie erwartet funktioniert. –

0

Sie sollten dies lesen:

How to fix the WPF form resize - controls lagging behind and black background?

Sie können die Farbe des schwarzen Bit ändern, die durch den Aufruf der SetClassLong Methode zeigt, wie durch @@ Ghord vorgeschlagen:

public static class WindowExtensions 
{ 
    private const int GCL_HBRBACKGROUND = -10; 
    private const int COLOR_WINDOW = 5; 

    public static void SetClassLong(this Window window) 
    { 
     //change the background colour of the window to "hide" possible black rendering artifacts 
     IntPtr handle = new WindowInteropHelper(window).EnsureHandle(); 
     if (handle != IntPtr.Zero) 
      SetClassLong(handle, GCL_HBRBACKGROUND, SafeNativeMethods.GetSysColorBrush(COLOR_WINDOW)); 
    } 

    private static IntPtr SetClassLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong) 
    { 
     if (IntPtr.Size > 4) 
      return SafeNativeMethods.SetClassLongPtr64(hWnd, nIndex, dwNewLong); 
     else 
      return new IntPtr(SafeNativeMethods.SetClassLongPtr32(hWnd, nIndex, unchecked((uint)dwNewLong.ToInt32()))); 
    } 
} 

public partial class MainWindow : Window, IViewFor<MainWindowViewModel> 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnSourceInitialized(EventArgs e) 
    { 
     base.OnSourceInitialized(e); 
     //change the background colour of the window to "hide" possible black rendering artifacts 
     this.SetClassLong(); 
    } 
} 
+0

Können Sie eine andere Lösung als die Einstellung des Hintergrundpinsels vorschlagen? Weil ich mit allen vorgeschlagenen Lösungen versucht habe, aber nicht für mich gearbeitet habe ... –

Verwandte Themen