WPF Grid响应鼠标事件

Posted lishuangquan1987

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF Grid响应鼠标事件相关的知识,希望对你有一定的参考价值。

在编写控件模板时,有时候使用Grid套一层TextBlock,要求鼠标移动到控件时,TextBlock的字体颜色变色。
这时候就有一个需求,如何让Grid相应鼠标事件。话不多说,上测试代码:
MainWindow.xaml:

<Window x:Class="GridTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:GridTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <Grid Height="100" Width="100"  MouseLeftButtonDown="Grid_MouseLeftButtonDown"></Grid>
    </StackPanel>
</Window>

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace GridTest

    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    
        public MainWindow()
        
            InitializeComponent();
        

        private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        
            MessageBox.Show("鼠标按下");
        
    


测试鼠标点击:鼠标移动上去点击,发现没有触发Grid的MouseLeftButtonDown事件
当把Grid加上Background="Gray"时测试结果如下:


如何让Grid不可见,同时又能响应鼠标事件呢:
答案:Background="Transparent"
测试结果如下:

结论:当不设置Grid的背景色时,Grid的背景色为null,此时Grid不响应任何鼠标事件,当设置Grid的背景色为一个值(包含透明色)时,Grid就可以响应鼠标事件了

以上是关于WPF Grid响应鼠标事件的主要内容,如果未能解决你的问题,请参考以下文章

WPF TabControl 下的grid内Button 鼠标点击事件

如何在Grid中响应鼠标移动事件

C# wpf父控件和子控件事件响应问题

2019-11-29-WPF-非客户区的触摸和鼠标点击响应

CefSharp For WPF响应页面点击事件

WPF学习第十七章 鼠标输入