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 . .Schwarzes leeres Fenster beim Laden eines Fensters WPF
Antwort
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.
Nein. Wir verwenden in unserem Projekt nicht die WindowChrome-Klasse. Wir importieren jedoch [DllImport ("user32.dll")] –
set AllowsTransparency = "True". Dies könnte Ihr Problem beheben. –
Ich habe versucht, den obigen Code zu verwenden, immer noch nicht wie erwartet funktioniert. –
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();
}
}
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 ... –
- 1. Schwarzes Fragment beim ersten Laden in ViewPager
- 2. Ändern der Startposition eines WPF-Fensters
- 3. Erstellen eines gemeinsamen Fensters in WPF
- 4. Testen eines WPF-Fensters mit StaticResources
- 5. Implementierung Fehler eines transparenten Fensters in WPF
- 6. Verschieben eines randlosen Fensters in WPF
- 7. WPF: Refresh/Update Kontrolle auf Fenster laden
- 8. Die "WindowState" -Eigenschaft eines Fensters in WPF mit MVVM binden
- 9. Erneutes Binden des DataContext eines Fensters in WPF
- 10. Skalierung des WPF-Fensters
- 11. Infinite Schleife Problem beim Laden des Fensters
- 12. Abbrechen eines Fensters schließen in WPF
- 13. Erzwingen der Erstellung eines nativen Win32-Handles WPF-Fensters
- 14. Bestätigungsmeldung beim erneuten Laden oder Schließen des Fensters, aber nicht beim Senden eines Formulars
- 15. WPF-übergeordnetes Element (Fenster)
- 16. Übergeordnetes Fenster beim Schließen des untergeordneten Fensters aktualisieren
- 17. WPF öffnet EXE-Programm in WPF-Fenster
- 18. WPF: Hinzufügen eines Benutzersteuerelements zu einem Fenster
- 19. WPF: Anwendung heruntergefahren nach dem Schließen eines Fensters
- 20. Genymotion zeigt leeres Fenster
- 21. Matlab plotten leeres Fenster
- 22. Java - Leeres Fenster
- 23. wpf Größe eines Fensters um alle Monitore zu verbrauchen
- 24. Erneutes Laden des übergeordneten Fensters aus dem untergeordneten Fenster
- 25. Größe eines WPF-Fensters ändern, aber Proportionen beibehalten?
- 26. Schließen eines Fensters
- 27. Festlegen eines Wpf-Fensters als Besitzer eines Winforms-Formulars
- 28. Erstellen eines WPF-Fensters aus einem WinForms-BackgroundWorker
- 29. Refresh übergeordnetes Fenster nach dem Schließen eines Popup-Fensters
- 30. Überschreiben eines Fensters
Ihre Frage ist fehlende Beschreibung des gewünschten Verhaltens – grek40