WPF - Приостановка потока пользовательского интерфейса?

У меня есть вкладка с перетаскиваемыми вкладками. Когда мышь отпускается, она удаляет выбранную вкладку из tabControl и добавляет ее в новое место. Моя проблема в том, что TabControl рисует себя после удаления вкладки, а затем снова при добавлении вкладки, поэтому появляется очень заметное мерцание, которое показывает вкладку за перемещаемой вкладкой.

Есть ли способ приостановить поток пользовательского интерфейса, чтобы элемент управления вкладкой не перерисовывался, пока не завершатся операции удаления и вставки? Или, возможно, какой-то другой альтернативный способ переставить элементы вкладок? Операция перетаскивания существует в отдельном файле кода как прикрепленное свойство.


person Rachel    schedule 10.05.2010    source источник


Ответы (2)


Можно ли удалить / снова вставить вкладку после завершения перетаскивания?

Я предполагаю, что ваша функция перетаскивания / перетаскивания использует украшения для рендеринга изображения при перетаскивании. Если вы можете прослушивать какие-то события dragstarted / dragfinished, вы должны иметь возможность просто ничего не делать со своим древовидным представлением во время перетаскивания элемента, а затем удалить / повторно вставить вкладку после завершения перетаскивания.

person Robin    schedule 10.05.2010
comment
Это то, что я делаю ... в событии MouseUp элемент удаляется и повторно вставляется в новое место. Моя проблема в том, что элемент управления вкладкой отображается после удаления и снова после повторной вставки, что дает очень заметное мерцание, показывающее вкладку за перетаскиваемой вкладкой. - person Rachel; 11.05.2010

На самом деле я обнаружил, что моя проблема вообще не связана с перетаскиванием. Это была функция, которая запускалась в событии SelectionChanged TabControl, которое вызывало перерисовку вкладок при добавлении и удалении.

person Rachel    schedule 11.05.2010