(请将下面所述的每个控件作为使用MVVM模式创建的控件)
所以,我有一个UserControl
我放在MainWindow
上。我想要UserControl
,如果点击(在MainWindow
内,在UserControl
内),背景会变为另一种颜色,如果我点击MainWindow
,但在外面UserControl
,UserControl
的背景将变为原始颜色。
我尝试了什么:
UserControl.InputBindings
内部应用一个Command来检测鼠标输入(MouseBinding
),但MouseBinding
引发的唯一MouseBinding
是Window.InputBindings
{1}}(当点击输入超出UserControl
时,应该提升仅),但显然,只要点击发生,唯一MouseBinding
筹集的只是Window.InputBindings
中的一个。CommandParameter
与MouseBinding
Window.InputBindings
之间的UserControl.InputBindings
不同。问题:
MouseBinding
内外点击UserControl
?由于
答案 0 :(得分: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;
}