侧边栏壁纸
博主头像
Tony's Blog博主等级

行动起来,coding

  • 累计撰写 83 篇文章
  • 累计创建 58 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
c#

WPF Grid响应鼠标事件

Tony
2024-02-23 / 0 评论 / 0 点赞 / 13 阅读 / 3917 字

本文链接: https://blog.csdn.net/lishuangquan1987/article/details/127686116

版权

在编写控件模板时,有时候使用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" 时测试结果如下:

1-dnpo.png

如何让Grid不可见,同时又能响应鼠标事件呢:

答案: Background="Transparent"

测试结果如下:

2-ycnw.png

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

0

评论区