如何在UserControl的内部和外部之间改变点击输入?

时间:2014-06-23 16:00:03

标签: c# wpf mvvm user-controls inputbinding

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

所以,我有一个UserControl我放在MainWindow上。我想要UserControl,如果点击(在MainWindow内,在UserControl内),背景会变为另一种颜色,如果我点击MainWindow,但在外面UserControlUserControl的背景将变为原始颜色。

我尝试了什么:

  1. 我尝试在UserControl.InputBindings内部应用一个Command来检测鼠标输入(MouseBinding),但MouseBinding引发的唯一MouseBindingWindow.InputBindings {1}}(当点击输入超出UserControl时,应该提升),但显然,只要点击发生,唯一MouseBinding筹集的只是Window.InputBindings中的一个。
  2. CommandParameterMouseBinding Window.InputBindings之间的UserControl.InputBindings不同。
  3. 问题:

    1. 如何区分MouseBinding内外点击UserControl
    2. 由于

1 个答案:

答案 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;
}