Recentemente ho riscontrato un problema simile con una finestra nera in WPF, in una soluzione VB 2010/.Net 4.0 in cui ogni altra finestra funzionava perfettamente. Il colpevole si è rivelato il modo in cui stavo attivando la visibilità, usando i seguenti 3 comandi qui sotto. La soluzione era quella di rimuovere tutto, ma la prima linea, quella con il riferimento proprietà Visibility (togliendo solo la linea .Show lo farebbe per rendere correttamente la prima volta, ma da allora in poi il nero):
Application.MisbehavingBlackWindow.Visibility = System.Windows.Visibility.Visible
Application.MisbehavingBlackWindow.Show()
Application.MisbehavingBlackWindow.Activate()
avrei mai prima aveva un problema con questa serie di comandi per mostrare una finestra WPF, quindi credo di essere entrato in un solco e non mi sono mai preso la briga di verificare se fosse il modo migliore per farlo; per abitudine, ho appena incollato il codice necessario per richiamare finestre. Funziona ancora per ogni altra finestra in ogni altra soluzione che abbia mai scritto, ma ha causato l'oscuramento di questa particolare finestra. All'inizio si verificava solo in modo intermittente in una particolare routine, quindi divenne permanente per ragioni sconosciute. Nessuno dei seguenti righe di codice che ho sperimentato con fatto alcuna differenza:
Application.MisbehavingBlackWindow.InvalidateVisual()
Application.MisbehavingBlackWindow.InvalidateArrange()
Application.MisbehavingBlackWindow.UpdateLayout()
Application.MisbehavingBlackWindow.BringIntoView()
Application.MisbehavingBlackWindow.WindowState = WindowState.Minimized
Application.MisbehavingBlackWindow.WindowState = WindowState.Normal
Spogliarello tutti i controlli fuori dalla finestra non ha avuto effetto; diventerebbe ancora nero se fosse popolato solo da un singolo TextBlock. D'altra parte, un pattern è emerso dopo aver provato ad eseguirlo da altre routine, in particolare se si è incollato il primo blocco di codice all'interno di uno che ha richiamato un'altra finestra. Se l'ho inserito appena prima di un blocco di codice come quello qui sotto, la finestra è diventata nera; se l'ho inserito dopo, non è così.
Application.OtherWindow.Visibility = System.Windows.Visibility.Visible
Application.OtherWindow.Show()
Application.OtherWindow.Activate()
La soluzione funziona (finora) anche se la finestra è nascosta utilizzando un comando Window.Hide(). Ne avevo già uno incluso in un evento Sub all'interno della finestra incriminata, che è stato attivato ogni volta che la finestra ha perso il focus. Riattivare l'utilizzo della proprietà Visibility continua a fare il trucco senza richiedere alcuna modifica a tale istruzione.
Spero che questo aiuti chiunque che attraversa questo problema irritante. Finora, la maggior parte delle soluzioni che ho visto sparse su Internet sembrano essere basate su temi come temi di Windows, schede grafiche e altre variabili esterne, ma possiamo apparentemente risolvere almeno alcune istanze di questo diritto nel nostro codice .Net dietro a.
Ho avuto lo stesso problema, utilizzando la stessa tecnica. – VHanded
hai risolto questo? –
@Luis Filipe - No, non ho risolto questo problema, il cliente che ha avuto questo problema ha deciso di passare a un prodotto diverso (non sorprendente) e non ho ricevuto lamentele da parte di nessun altro, spero che tu trovi la soluzione – Nir