WPF - определение, находится ли мышь над элементом UIE - PullRequest
10 голосов
/ 03 декабря 2010

У меня есть некоторая разметка xaml, которая выглядит примерно так:

<Canvas x:Name="A">
     <Canvas x:Name="B"/>
</Canvas>

Я хочу определить, находится ли мышь над Canvas B.

Когда я нажимаю, когда моя мышь находится над Canvas B, Mouse.DirectlyOver возвращает Canvas A (как я и ожидал). Затем я получаю ссылку на Canvas B из Canvas A, но когда я проверяю свойство IsMouseOver Canvas B, возвращается false.

Каков наилучший способ определить, находится ли мышь над Canvas B, учитывая xaml выше?

Ответы [ 2 ]

25 голосов
/ 21 февраля 2013

Вы можете использовать свойство IsMouseOver , чтобы определить, находится ли мышь над данным элементом управления или нет:

if(this.B.IsMouseOver)
    DoSomethingNice();

Хотя Mouse.DirectlyOver может работать,если мышь находится над элементом управления, содержащимся в Canvas, этот элемент управления будет возвращен вместо самого Canvas.IsMouseOver будет работать правильно даже в этом случае.

4 голосов
/ 01 февраля 2012

Я нашел ответ здесь на SO, который должен вам помочь: StackOverflow: WPF Способы поиска элементов управления

Только для справки:

Я просто искал способ выяснить, находится ли моя Мышь над окном моих приложений, и я успешно выяснил это, используя:

if (Mouse.DirectlyOver != null)
    DoSomethingNice();

Во время отладки Mouse.DirectlyOver казалось, что он должен был найти ваш Canvas B, поскольку он ищет самый верхний элемент - поэтому ваш пример должен работать. Он не дал мне объект зависимости, но я думаю, вы могли бы просто сравнить его с вашим холстом, используя следующий код (непроверенный):

if (Mouse.DirectlyOver == this.B)
    DoSomethingNice();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...