Как различить ввод клика внутри и снаружи UserControl?
(Пожалуйста, примите каждый элемент управления, указанный ниже, как элемент управления, созданный с использованием шаблона MVVM)
Итак, у меня есть UserControl
который я ставлю на свой MainWindow
, Я хочу мое UserControl
, если щелкнуть (в MainWindow
, внутри UserControl
), фон изменился на другой цвет, и если я нажму на MainWindow
, но за пределами UserControl
тогда UserControl
's фон изменится на исходный цвет.
Что я пробовал:
- Я пытался применить Команду внутри
UserControl.InputBindings
для определения ввода мыши (MouseBinding
), но единственныйMouseBinding
поднял этоMouseBinding
вWindow.InputBindings
(который должен быть поднят ТОЛЬКО, когда ввод щелчка находится внеUserControl
), но, видимо, где бы ни происходил щелчок,MouseBinding
поднят только один вWindow.InputBindings
, - Различаются
CommandParameter
междуMouseBinding
вWindow.InputBindings
а такжеUserControl.InputBindings
,
Вопрос:
- Как отличить
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;
}