2010-10-18 4 views
1

У меня есть сетка 6x8 из System.Windows.Controls.Canvas объектов. Верхний левый холст не принимает события мыши, пока все остальные делают. Я пробовал OnMouseMove и OnMouseClick событий.Мышь не достигла UIElement

Детский объект не обрабатывает событие, потому что System.Windows.Media.VisualTreeHelper#GetChildrenCount() не показывает детей. Я тоже не смог поймать PreviewOnMouseMove. Может ли быть некоторый (возможно, прозрачный) контроль перед моим холстом, который имеет приоритет?

+0

не могли бы вы отправить код/​​xaml? это помогло бы нам много помочь вам решить вашу проблему! ;) –

+0

Я знаю, я знаю. Здесь и там создается множество элементов управления. Мой вопрос был бы очень громоздким. – tilish

ответ

0

Наконец-то нашли решение. Каждый из Canvas es имеет Adorner с. Согласно this MSDN article, adorners получают события мыши до того, как делает основной элемент пользовательского интерфейса. Я установил IsHitTestVisible имущество всех моих украшений на false.

0

Я надеюсь, что это поможет вам, Просто установите Transparent значение в Background собственности для Canvas:

Background="Transparent" 

Удачи!

+0

Я пробовал это без радости. – tilish

+0

Вы пробовали его для холста и сетки? – Homam

+0

Я пробовал только для холста - но только для записи у нас есть какие-либо объяснения, почему может помочь настройка фона на прозрачность? EDIT: (Было бы полезно знать) – tilish