События, которые происходят «одновременно», добавляются в очередь Dispatcher. Если одно событие устанавливает «зум», а затем «центр», очередь будет содержать событие масштабирования, за которым следует центральное событие.
Я не совсем уверен, что вы подразумеваете под определением приоритета. Если вы имеете в виду изменение порядка обработки обработчиков событий, единственный способ сделать это - изменить код, который устанавливает два свойства так, чтобы они были установлены в другом порядке. Когда обработчики событий добавляются в очередь, вы не можете их переупорядочить.
Если вы хотите обрабатывать только первое «одновременное» событие, это должно быть возможно, отключив другого обработчика до конца очереди. Что-то вроде этого:
// in ZoomLevelChanged handler:
_zooming = true;
mapControl.Dispatcher.BeginInvoke(new Action(() => _zooming = false));
// in CenterChanged handler:
if (_zooming) return;
// rest of implementation
BeginInvoke добавляет действие к концу очереди, поэтому _zooming
флага только будет сброшен после того, как непосредственный CenterChanged
обработчик был вызван и пропускается, позволяя последующее CenterChanged
события, которые будут обрабатываться в обычном режиме.
Зачем вам нужно отключить его? Вы справляетесь с этим? Если не просто проигнорировать это. – Charleh