WPF下,控件未响应鼠标属性触发器

记一次自定义控件调试

使用WPF写了个自定义控件,其中有个Button按钮,重写了样式模板

<Button Width="50" Height="25" Foreground="Black">
<Button.Template>
<ControlTemplate>
<Border x:Name="clearborder" SnapsToDevicePixels="True">
<Path x:Name="xx" Stroke="{TemplateBinding Foreground}">
<Path.Style>
<Style TargetType="Path">
<Setter Property="Data" Value="M1.25,6.75 L6.75,1.25 M1.25,1.25 L6.75,6.75"></Setter>
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Shape.StrokeEndLineCap" Value="Round" />
</Style>
</Path.Style>
</Path>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="clearborder" Property="Background" Value="Blue"></Setter>
<Setter TargetName="xx" Property="Stroke" Value="Yellow"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>

问题现象

使用时发生了一个奇怪的现象,鼠标只有很靠近path的时候,背景色才会变化。

问题分析

监视了属性的变化,确实只有鼠标移动到path附近的时候,IsMouseOver属性才变为True。
为什么鼠标已经移动到Button内但是IsMouseOver属性却没有变化呢?
原因在于没有为Border设置默认的背景色。当Border的背景色没有设置时,其属性值为Null,当控件调用InputHitTest方法检测时,会直接跳过,所以影响到鼠标事件的响应。

解决方式

改进方法也很简单,设置Border的背景色为Transparent,透明背景的控件依然会被hit test检测到,所以能正常响应鼠标事件,显示上也不会受影响。

相似问题
Hit Test说明

WPF下,控件未响应鼠标属性触发器的更多相关文章

  1. WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果

    原文:WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果   本以为Label也有TextChanged 事件,但在使 ...

  2. WPF 用户控件的自定义依赖属性在 MVVM 模式下的使用备忘

    依赖属性相当于扩充了 WPF 标签的原有属性列表,并可以使用 WPF 的绑定功能,可谓是十分方便的:用户控件则相当于代码重用的一种方式:以上几点分开来还是比较好理解的,不过要用到MVVM 模式中,还是 ...

  3. WPF ListView控件设置奇偶行背景色交替变换以及ListViewItem鼠标悬停动画

    原文:WPF ListView控件设置奇偶行背景色交替变换以及ListViewItem鼠标悬停动画 利用WPF的ListView控件实现类似于Winform中DataGrid行背景色交替变换的效果,同 ...

  4. WPF系列 —— 控件添加依赖属性(转)

    WPF系列 —— 控件添加依赖属性 依赖属性的概念,用途 ,如何新建与使用.本文用做一个自定义TimePicker控件来演示WPF的依赖属性的简单应用. 先上TimePicker的一个效果图. 概念 ...

  5. WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系

    WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系: 1.Canvas/WrapPanel控件: 其子控件的HorizontalAlign ...

  6. C# WPF Image控件下对于Base64的转化显示

    原文:C# WPF Image控件下对于Base64的转化显示 算作前言 本文对图片如何转化成base64不做描述,我们可以从很多途径了解到转化办法.却很少有博客提到怎么在WPF的Image控件中显示 ...

  7. wpf控件开发基础(3) -属性系统(2)

    原文:wpf控件开发基础(3) -属性系统(2) 上篇说明了属性存在的一系列问题. 属性默认值,可以保证属性的有效性. 属性验证有效性,可以对输入的属性进行校验 属性强制回调, 即不管属性有无发生变化 ...

  8. wpf控件开发基础(4) -属性系统(3)

    原文:wpf控件开发基础(4) -属性系统(3) 知识回顾 接上篇,上篇我们真正接触到了依赖属性的用法,以及依赖属性的属性元数据的用法,并且也实实在在地解决了之前第二篇提到的一系列问题.来回顾一下 属 ...

  9. wpf控件开发基础(2) -属性系统(1)

    原文:wpf控件开发基础(2) -属性系统(1) 距离上篇写的时间有1年多了.wpf太大,写的东西实在太多,我将依然围绕着自定义控件来展开与其相关的技术点. 也欢迎大家参与讨论.这篇我们将要讨论的是W ...

  10. 迟到的 WPF 学习 —— 控件

    这一章书中内容比较多而杂,但每个对象的内容又相对简短,所以只挑选里边有代表性的内容做记录. 1. Label 控件:一个基础的简单的 ContentControl,Labe 支持快捷键文本的设置,可以 ...

随机推荐

  1. ASP.NET Core – MVC vs Razor Page

    前言 早年只有 MVC, Razor Page 是后来才出现的. 一开始其实我很看不起 Razor Page, MVC 能做的东西为什么要搞多一个 Razor Page 来做呢? 但我还是尝试用了起来 ...

  2. 【学习笔记】数位DP

    数位DP 适用条件 此类题目一般要求在\([l,r]\)区间内满足条件的数的个数,答案一般与数的大小无关,而与数各位的组成有关.题目中给出的数的范围一般较大,往往在\(10^9\)以上因此无法暴力枚举 ...

  3. C#|.net core 基础 - 值传递 vs 引用传递

    不知道你在开发过程中有没有遇到过这样的困惑:这个变量怎么值被改?这个值怎么没变? 今天就来和大家分享可能导致这个问题的根本原因值传递 vs 引用传递. 在此之前我们先回顾两组基本概念: 值类型 vs ...

  4. Element——前端样式美化

    Element 简介    Element 快速入门      https://element.eleme.cn/#/zh-CN/component/button Element 布局      ht ...

  5. 图解YUV420、YUV420(YUY2)、YUV422(YVYU)

    Y:亮度分量    UV:色度分量 1.  标准yuv指的是yuv420 一般看文章,会出现下面的公式,但不涉及具体的yuv格式,其实这一定指的是yuv420 Y与RGB的演算关系为:Y = 0.21 ...

  6. Vue3——环境变量的配置

    vue3环境变量的配置 开发环境(development) 测试环境(testing) 生产环境(production) 项目根目录分别添加 开发.生产和测试环境的文件! .env.developme ...

  7. 基于SqlAlchemy+Pydantic+FastApi的Python开发框架

    随着大环境的跨平台需求越来越多,对与开发环境和实际运行环境都有跨平台的需求,Python开发和部署上都是跨平台的,本篇随笔介绍基于SqlAlchemy+Pydantic+FastApi的Python开 ...

  8. Kubernetes基础(kube-apiserver?kube-controller-manager?kube-scheduler?kubelet?kube-proxy?kubectl?)(十一)

    一.kube-apiserver API Server 提供了资源对象的唯一操作入口,其它所有组件都必须通过它提供的 API 来操作资源数据.只有 API Server 会与 etcd 进行通信,其它 ...

  9. 高通dump ftrace & kernelshark使用

    简介 高通 ramdump 可以解析出 ftrace,方便用于追踪 快省稳 问题. kernelshark 是一个可以查看 trace event 的图形化工具,方便梳理和观察内核微观行为. trac ...

  10. 墨天轮沙龙 | 麦杰科技卢学东:openPlant 实时数据库系统及应用

    在8月24日举办的[墨天轮数据库沙龙第九期-工业实时数据库专场]中,麦杰科技创始人 卢学东分享了<麦杰openPlant实时数据库系统及应用>主题演讲,本文为整理内容. 导读 工业互联网推 ...