WPF catch单击网格及其所有子标签,文本框等。

时间:2014-02-27 20:51:12

标签: c# wpf

假设我有一个xaml文件,一个窗口,为什么不呢。在这个xaml中,我有一个带有多个标签的网格,textBoxs,comboBoxs,list ...你看到了patern。在某个时间点(其中X == true)我希望能够捕捉网格内的点击及其中的所有内容。

我想仍然可以做这个点击将要做的事情,所以网格上的一个完整的矩形不是我正在寻找的答案。点击的动作是将X恢复为假。没什么。

是否有一种简单的方法来管理网格上的点击及其中的所有内容?

提前致谢

2 个答案:

答案 0 :(得分:5)

您只需要使用所有控件共有的事件。对于这种情况,可能最好的是UIElement.PreviewMouseDown event。试试这个:

<StackPanel UIElement.PreviewMouseDown="StackPanel_PreviewMouseDown">
    <Label Content="I'm a Label" />
    <Button Content="I'm a Button" />
    <CheckBox Content="I'm a CheckBox" />
</StackPanel>

您需要使用其中一个Preview...事件,以便在Button消耗它之前捕获它... UIElement.MouseDown事件不能用于{{1因为这个原因。但是,您可以使用其他Button方法,例如Preview...事件。

答案 1 :(得分:2)

您能提供示例代码吗?

根据我的理解,您可以使用它,它将捕获您在网格内的所有点击。

<强>的.xaml

<Grid MouseDown="Grid_MouseDown">
<Label MouseDown="Grid_MouseDown" />
<Button MouseDown="Grid_MouseDown"/>
<Button MouseDown="Grid_MouseDown"/>
</Grid>

<强> .xaml.cs

private Grid_MouseDown(object sender,MouseButtonEventArgs e)
{
    if(X==true)
    {
      //doSomething
    }
    else
    {
     //do SomethingElse
    }
}

编辑:这个怎么样?