2009-07-21 5 views
2

Иногда, когда я открываю конкретное контекстное меню на кнопке, а затем нажимаю другую кнопку, все окно становится черным, за исключением прямоугольника. Когда я минимизирую и максимизирую или перемещаю окно на другой экран, окно перекрашивается. Я зарегистрирован на событиях кнопок и контекстного меню и включает в себя некоторые работы, такие как изменение ограниченных свойств и т. Д. Является ли это моей ошибкой (и если да, то как я могу это исправить?) Или это ошибка структуры?Окно WPF черным

Обновление (23.07): Я избегал проблемы в этой конкретной области, но я до сих пор мало что знаю об этом. У меня был ListBox с ContextMenu поверх него. Видимость ListBox'а была ограничена определенным свойством, когда у него было одно значение, которое ListBox было видимым, а когда оно имело другое значение, оно было свернуто. MenuItem ContextMenu Изменено свойство, которое, в свою очередь, изменило видимость. Иногда, когда видимость была изменена на Collapsed, весь экран стал черным. Поиграв с ним, я заметил, что этого не происходит в Hidden, поэтому теперь я использую Hidden вместо Collapsed. Я предполагаю, что проблема с перестановкой элементов управления после рушится одна в середине.

+0

Можно ли разместить код для образца, который воссоздает проблему? – Andy

+0

Не совсем. его в другой сети. Код изменяет только одно свойство, но это свойство является источником большого количества привязки. – 2009-07-21 14:16:01

ответ

1

Прежде всего, я понял, что экран становится черным только тогда, когда у меня есть всплывающее окно (ContextMenu, ComboBox), и пока оно открыто, я меняю видимость чего-то другого.


Видимо это потому, что я (и остальная часть моей команды) использовать 2 экрана компьютера с Pro драйвер ATI Radeon X1300. Если вы отключите второй экран, все в порядке. Спасибо в любом случае ...

+1

Это не ограничивается этой видеокартой. Я испытываю то же самое (с теми же симптомами и [неприемлемым] обходным решением) с NVIDIA Quadro K4100M. Для меня есть другой способ обхода - перемещайте его назад и вперед по мониторам (отпустите мышь на каждом мониторе), пока он не красится правильно на мониторе, на котором я хочу. Это раздражает, но это работает для меня. – Travis

+0

Решение @Travis - единственное, что работает прямо сейчас для меня (используя Nvidia Quadro K1100M Driver 368.22) –

1

Похоже, что поток пользовательского интерфейса удерживается во время обработки. То же самое происходит, когда вы отлаживаете приложение WPF, и вы нажимаете точку прерывания, или вы обычно делаете длинный запрос данных и т.д., прежде чем возвращать результаты на экран.

Чтобы обойти это, я нажимаю большую часть своей обработки в отдельный поток, чтобы гарантировать, что пользовательский интерфейс никогда не будет выполняться другой обработкой.

+0

Когда я отлаживаю окно, зависает или гаснет, он никогда не становится черным. Практически нет реальной обработки, все, что я делаю, - это изменение ограниченного свойства. Считаете ли вы, что привязка занимает много времени? – 2009-07-21 15:33:33

+0

Нет другого объяснения, действительно. Вы сказали, что свойство является источником многих привязок - разумно думать, что ваш пользовательский интерфейс не обновляется, пока все эти привязки происходят. Без какого-либо определенного кода будет очень сложно определить, что может вызвать эту проблему, за пределами самого общего случая (что-то блокирует пользовательский интерфейс). – Charlie

+0

SHD_lotion, он изначально бежит для меня и, если я не вернусь к нему, он затем покажется черным. Что касается того, как долго длится привязка, а не уверен, что скорее всего это будет причиной черного экрана, а не ошибки. – TravisPUK