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

Posted on   云起  阅读(28)  评论(0编辑  收藏  举报  

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

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义

随笔 - 119, 文章 - 0, 评论 - 3, 阅读 - 4066

Copyright © 2025 云起
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示