Манипулирование ZIndex of Adorners для изменения обнаружения щелчков между элементами управления - PullRequest
1 голос
/ 24 мая 2011

Эй, у меня есть Canvas с кучей ContentControls, добавленных как дети.У каждого ContentControl есть рекламный элемент сверху, чтобы обнаружить клики на ContentControl (плюс другие функции).Я хотел бы изменить ZIndex ContentControl и изменить, какой ContentControl обнаруживает щелчок.Я изменил ZIndex рекламодателя, но когда я щелкаю ContentControl, который выглядит сверху (более высокое значение ZIndex), щелчок обнаруживается элементом управления сзади, как это было допереупорядочение ZIndex.

Итак, как я могу решить эту проблему?

Это код, который я использую для изменения ZIndex Adorner:личная ссылка на рекламодателя, который находится поверх ContentControl.

Спасибо.

1 Ответ

0 голосов
/ 22 сентября 2012

Panel.ZIndex не может быть использован для заказа украшений по некоторым причинам. Относительный ZIndex для украшенных элементов управления также не имеет значения для порядка украшений, потому что украшения поднимаются и помещаются в слой, который лежит поверх всех ваших реальных элементов управления.

У меня была похожая проблема, но мне просто нужно было заказать мои украшения. Я использовал рефлексию, чтобы установить ордера:

var setZOrderMethodInfo = adornerLayer.GetType().GetMethod("SetAdornerZOrder", 
      System.Reflection.BindingFlags.NonPublic |  
      System.Reflection.BindingFlags.Instance);     
setZOrderMethodInfo.Invoke(adornerLayer, new object[] { adorner1, 0 });     
setZOrderMethodInfo.Invoke(adornerLayer, new object[] { adorner2, 1 });

из Zorder of Adorners в AdornerLayer .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...