Выполнение теста удара в silverlight - PullRequest
1 голос
/ 06 января 2011

Возможно ли в Silverlight 4 выяснить, на каком элементе управления нажимается кнопка? На всех UIElements есть свойство, которое называется IsHitTestVisible, но я не могу выполнить самый хитовый элемент управления?

Ответы [ 2 ]

2 голосов
/ 06 января 2011

Вы можете выполнить проверку с помощью VisualTreeHelper.FindElementsInHostCoordinates, как описано в документах MSDN:

http://msdn.microsoft.com/en-us/library/cc838402%28v=VS.95%29.aspx

Однако более простым подходом может быть добавление обработчиков к событиям MouseLeftButtonUp для определенных элементовВы заинтересованы в тестировании удара.

1 голос
/ 07 января 2011

Вы можете обнаружить щелчки мыши с помощью событий MouseLeftButtonDown или MouseLeftButtonUp (или эквивалентных событий RightButton).

Это всплывающие события, которые означают, что они не обрабатываются, но фактический элемент нажалсобытие будет запускаться на содержащем элементе и т. д. до корневого элемента.

Следовательно, для многих простых элементов вы можете добавить обработчик к содержащему элементу и использовать свойство OriginalSource MouseButtonEventArgs дляопределить, какой элемент на самом деле сгенерировал сообщение.

Однако вы используете слово «Управление», которое некоторые используют свободно для обозначения элементов пользовательского интерфейса, другие используют более строго для обозначения таких вещей, как ListBox.В последнем случае эти элементы управления могут обрабатывать события мыши, поэтому они больше не всплывают.

Вы все еще можете получить события LeftButton, используя AddHandler для содержащего UIElement, даже те, которые были обработаны.Это все еще оставило бы вас с проблемой обнаружения фактического элемента управления, в котором вы заинтересованы, поскольку OriginalSource будет неким компонентом элемента управления и, следовательно, потомком элемента управления.

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