2009-07-21 26 views
2

Manchmal, wenn ich ein bestimmtes Kontextmenü auf einer Schaltfläche öffne und dann eine andere Taste drücke, wird das ganze Fenster bis auf ein Rechteck schwarz. Wenn ich das Fenster verkleinere und maximiere oder das Fenster auf einen anderen Bildschirm verschiebe, wird das Fenster neu gezeichnet. Ich bin registriert zu den Ereignissen des Knopfes und des Kontextes und es beinhaltet einige Arbeiten wie das Ändern von beschränkten Eigenschaften und so weiter. Ist es meine Schuld, (und wenn es ist, wie kann ich es beheben?) Oder es ist ein Framework-Bug?WPF-Fenster wird schwarz

Update (23.07): Ich vermied das Problem in diesem speziellen Bereich, aber ich weiß immer noch nicht viel darüber. Ich hatte eine ListBox mit einem ContextMenu darüber. Die ListBox'es-Sichtbarkeit war an eine bestimmte Eigenschaft gebunden, bei einem Wert war die ListBox sichtbar und bei einem anderen Wert war sie Collapsed. Das MenuItem des ContextMenu Changed die Eigenschaft, die wiederum die Sichtbarkeit änderte. Manchmal, wenn die Sichtbarkeit zu Collapsed geändert wurde, wurde der gesamte Bildschirm schwarz. Nachdem ich damit herumgespielt habe, ist mir aufgefallen, dass es in Hidden nicht passiert, also benutze ich nun Hidden statt Collapsed. Ich denke, das Neuordnen der Steuerelemente nach dem Zusammenklappen eines in der Mitte war das Problem.

+0

Wäre es möglich, den Code für ein Beispiel zu veröffentlichen, das das Problem neu erstellt? – Andy

+0

Nicht wirklich. es ist in einem anderen Netzwerk. Der Code ändert nur eine einzelne Eigenschaft, aber diese Eigenschaft ist die Quelle einer Menge von Bindung. –

Antwort

1

Zuerst wurde mir klar, dass der Bildschirm nur dann schwarz wird, wenn ich eine Art Pop-up geöffnet habe (ContextMenu, ComboBox) und während der Öffnung die Sichtbarkeit von etwas anderem ändere.


Offenbar ist es, weil ich (und der Rest meines Teams) verwenden zwei Computer-Bildschirme mit den ATI Radeon X1300 Pro-Treiber. Wenn Sie den zweiten Bildschirm deaktivieren, ist alles in Ordnung. Danke trotzdem ...

+1

Dies ist nicht auf diese Grafikkarte beschränkt. Ich erlebe das gleiche (mit den gleichen Symptomen und [inakzeptabel] Workaround) mit einer NVIDIA Quadro K4100M. Es gibt eine weitere Problemumgehung für mich - bewegen Sie es hin und her über Monitore (Loslassen der Maus auf jedem Monitor), bis es auf dem Monitor, auf dem ich es möchte, richtig malt. Es ist nervig, aber es funktioniert für mich. – Travis

+0

@Travis Lösung ist die einzige Lösung, die momentan für mich arbeitet (mit Nvidia Quadro K1100M Treiber 368.22) –

1

Es klingt, als ob der UI-Thread während der Verarbeitung aufgehalten wird. Das Gleiche passiert, wenn Sie eine WPF-App debuggen und einen Unterbrechungspunkt erreichen oder eine normalerweise lange Datenabfrage usw. haben, bevor Sie die Ergebnisse auf dem Bildschirm anzeigen.

Um dies zu umgehen schiebe ich die Mehrheit meiner Verarbeitung in einen separaten Thread, um sicherzustellen, dass die Benutzeroberfläche nie durch andere Verarbeitung betroffen ist.

+0

Wenn ich debugge das Fenster einfriert oder weiß wird, wird es nie schwarz. Es gibt fast keine echte Verarbeitung, ich ändere nur eine beschränkte Eigenschaft. Glaubst du, dass die Bindung so lange dauert? –

+0

Es gibt wirklich keine andere Erklärung. Sie haben gesagt, dass die Eigenschaft die Quelle einer Menge von Bindungen ist - es ist vernünftig zu denken, dass Ihre UI nicht aktualisiert wird, während alle diese Bindungen stattfinden. Ohne einen bestimmten Code ist es sehr schwer zu bestimmen, was dieses Problem außerhalb des allgemeinsten Falles verursachen könnte (die UI ist irgendwie blockiert). – Charlie

+0

SHD_lotion, es geht mir anfangs auch weiss wenn ich nicht zurückspringe, es wird dann schwarz angezeigt. Wie lange Ihre Bindung dauert, ist nicht sicher, nur dass es eher der Grund für den schwarzen Bildschirm als ein Bug ist. – TravisPUK

Verwandte Themen