0

(请将以下每个控件作为使用 MVVM 模式创建的控件)

所以,我有一个UserControl放在我的MainWindow. 我想要我的UserControl, 如果点击(在MainWindow, 里面UserControl),背景变成另一种颜色,如果我点击MainWindow, 但在外面UserControl,那么UserControl的背景会变成原来的颜色。

我试过的:

  1. 我试图在UserControl.InputBindings其中应用一个命令来检测鼠标输入(MouseBinding),但唯一MouseBinding提出的是MouseBinding在(只有当点击输入在外面时才Window.InputBindings应该提出),但显然,无论发生点击,唯一提出的只是其中的一个。UserControlMouseBindingWindow.InputBindings
  2. 区分in和。CommandParameter_MouseBindingWindow.InputBindingsUserControl.InputBindings

问题 :

  1. 如何区分MouseBinding点击内部UserControl和外部?

谢谢

4

1 回答 1

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;
}
于 2014-06-23T16:10:56.370 回答