如何捕获整个网格的事件

时间:2018-03-15 18:45:52

标签: c# wpf

我的网格占据了界面的四分之一。每当有人点击这个网格(或接口的四分之一)时,我想捕获一个事件。我创建了一个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>

             ......

1 个答案:

答案 0 :(得分:1)

我不知道窗户的其余部分是怎样的,但我通常做的是创建一个通常为白色背景的Rectangle(我不认为它可以透明但是我不确定在Grid我想要捕获MouseButtonDownPreviewMouseDown下面。它看起来像这样:

<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>

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