У меня есть пользовательский элемент управления WPF, который я сделал пару дней назад:
public class MapContext : FrameworkElement{
//....
protected override void OnRender(DrawingContext dc) {
// Draw the map
if (mapDrawing != null) dc.DrawDrawing(mapDrawing);
}
Чертеж mapDrawing
обновляется в другом потоке, где вычисляются все отображаемые геометрии, затем поток обновляет пользовательский интерфейс, вызывая InvalidateVisual()
:
Application.Current.Dispatcher.Invoke(DispatcherPriority.Render, new Action(delegate { InvalidateVisual(); }));
Вкл. InvalidateVisual
, Документация MSDN говорит:
Делает недействительной визуализацию элемента и запускает новый проход макета. OnRender вызывается после завершения цикла макета.
Это не то поведение, которое мне нужно, поскольку макет элемента управления MapContext
не изменился. Только рисунок внутри изменился.
Вопрос
Есть ли правильный способ заставить метод OnRender
вызываться без выполнения полного прохода макета?
Заранее спасибо