Как различить ввод клика внутри и снаружи UserControl?

(Пожалуйста, примите каждый элемент управления, указанный ниже, как элемент управления, созданный с использованием шаблона MVVM)

Итак, у меня есть UserControl который я ставлю на свой MainWindow, Я хочу мое UserControl, если щелкнуть (в MainWindow, внутри UserControl), фон изменился на другой цвет, и если я нажму на MainWindow, но за пределами UserControlтогда UserControl's фон изменится на исходный цвет.

Что я пробовал:

  1. Я пытался применить Команду внутри UserControl.InputBindings для определения ввода мыши (MouseBinding), но единственный MouseBinding поднял это MouseBinding в Window.InputBindings (который должен быть поднят ТОЛЬКО, когда ввод щелчка находится вне UserControl), но, видимо, где бы ни происходил щелчок, MouseBinding поднят только один в Window.InputBindings,
  2. Различаются CommandParameter между MouseBinding в Window.InputBindings а также UserControl.InputBindings,

Вопрос:

  1. Как отличить MouseBinding между нажатием внутри UserControl а снаружи?

Спасибо

1 ответ

Решение

Решение простое. Просто прикрепите PreviewMouseDown обработчик событий для обоих Window и UserControl и обрабатывать оба события вWindow:

<Window ... PreviewMouseDown="Window_PreviewMouseDown">
    <UserControl Name="Control" PreviewMouseDown="UserControl_PreviewMouseDown" ... / >
</Window>

...

private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    Control.Background = someNewColourBrush;
}


private void UserControl_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    Control.Background = originalColourBrush;
}
Другие вопросы по тегам