У меня есть визуальное дерево, которое выглядит следующим образом:WPF MouseDown событий
Border
, содержащий ScrollViewer
, содержащий TexBlock
.
ScrollViewer
занимает 100% пространства Border
и TextBlock
может или не может занять до 100% от пространства ScrollViewer
в зависимости от того, как пользователь настраивает его.
Я хочу захватить событие MouseDown
, когда пользователь нажимает в любом месте Border
. Когда я регистрирую событие MouseDown
для Border
или ScrollViewer
, обратный вызов не будет вызван. Когда я регистрирую событие MouseDown
на TextBlock
, обратный вызов активируется, но, конечно, только в области с кликом TextBlock
, а не в полной области Border
.
Одна из идей, которые у меня есть, заключается в создании какого-то элемента верхнего уровня, который будет проходить через весь элемент управления, установить видимость на скрытый, затем получить MouseDown
.
Любые предложения? Если что-то неясно об этом вопросе, дайте мне знать, и я это исправлю.
Отображение Пример кода по запросу
// Need to know when a user clicks on anything inside of the border, but the
// because there are items above it, the mouse event doesn't get invoked.
Border border = new Border();
ScrollViewer viewer = new ScrollViewer();
TextBlock textBlock = new TextBlock();
border.Content = viewer;
viewer.Child = textBlock;
Не можете найти код –
@FlatEric Код слишком сложен для показа на одной странице. Как я и намекал, это часть настраиваемого пользователем приложения, поэтому она довольно динамична и абстрагирована. Я тоже не использую XAML. Лучше всего я могу создать код, который будет проще показать, и это то же самое, о чем я говорю. –
Никто не хочет, чтобы вы опубликовали свой полный код. Вам нужно довести вопрос до [хорошего, _minimal_, _complete_ кода примера] (http://stackoverflow.com/help/mcve), который четко показывает, что вы пробовали, а также включает точное подробное объяснение того, что этот код делает и как это отличается от того, что вы хотите. –