wpf ловит мышь за пределами моего пользовательского элемента управления - PullRequest
3 голосов
/ 20 декабря 2010

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

Мой элемент управления наследуется от ListBox.

Ответы [ 2 ]

7 голосов
/ 20 декабря 2010

Вы можете использовать UIElement.CaptureMouse и его партнера UIElement.ReleaseMouseCapture, чтобы захватить все события мыши в одном элементе управления, независимо от того, над какой мышью было выполнено действие, когда произошло событие.

В вашем примере я бы захватил мышь, когда элемент управления имеет фокус, и отпустил мышь, когда элемент управления теряет фокус.

0 голосов
/ 20 декабря 2010

Предположим, у вас есть Window с TextBox на нем.

Регистрируясь на событие Window MouseDown,

MouseDown += new MouseButtonEventHandler(Window_MouseDown);

Вы можете использовать следующий код

private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (TextBox1.IsFocused)
    {
        MessageBox.Show("TextBox1 in focus.");
    }
}

Чтобы поймать это событие, если TextBox1 в фокусе.

...