Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为整个网格捕获事件_C#_Wpf - Fatal编程技术网

C# 如何为整个网格捕获事件

C# 如何为整个网格捕获事件,c#,wpf,C#,Wpf,我有一个网格,它占据了接口的四分之一。我想在任何人使用此网格(或界面的四分之一)单击任何位置时捕获事件。我创建了一个stackpanel,并设置了PreviewMouseDown按钮,但当我单击网格空间中的任何位置时,它不会捕获事件。我做错了什么 <Grid > <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefi

我有一个网格,它占据了接口的四分之一。我想在任何人使用此网格(或界面的四分之一)单击任何位置时捕获事件。我创建了一个stackpanel,并设置了PreviewMouseDown按钮,但当我单击网格空间中的任何位置时,它不会捕获事件。我做错了什么

         <Grid >
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>

            </Grid.RowDefinitions>

            <StackPanel Grid.Row="0" Grid.RowSpan="3"
                        Name="sp_activationSpace"
                        PreviewMouseDown="testing"></StackPanel>

             ......

......

我不知道窗口的其余部分是什么样子,但我通常做的是在
网格下创建一个背景通常为白色的
矩形(我不认为它是透明的,但我不确定),我想捕获
鼠标按钮下的
预览鼠标下的
。它可能是这样的:

<Grid>
    <Rectangle PreviewMouseDown="MyGrid_PreviewMouseDown" Margin="0"/>
    <Grid>
        <!--your grid-->
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>

        </Grid.RowDefinitions>

        <StackPanel Grid.Row="0" Grid.RowSpan="3"
                    Name="sp_activationSpace"
                    PreviewMouseDown="testing"></StackPanel>

         ......
    </Grid>
</Grid>

......

同样,这是一个简单且功能良好的解决方案,但是如果您需要透明度,它可能不适合。我怀疑您只有一个白色(或任何纯色)窗口背景。

尝试将PreviewMouseDown=“testing”移动到网格中,而不是像堆栈面板一样移动到网格中。当我这样做时,我可以单击网格中的按钮或标签,然后捕获事件。但如果我点击空白,它将不会被捕获。我希望它捕获我在网格中的任何单击。请尝试在事件处理程序中检查原始源的类型。矩形不起作用,但空白标签起作用。够近了。工作起来很有魅力。谢谢