WPF: 当IsEnabled=false时如何获取MouseEnter事件

5

当自定义控件被禁用时,我希望能够处理MouseEnter事件。有没有办法处理它?

2个回答

4
UIElement.IsEnabled的文档记录了您看到的行为:

未启用的元素不参与命中测试或焦点,因此不会成为输入事件的源。

对我而言,逻辑上的结论是,如果您确实想要处理鼠标事件,则不应禁用控件。相反,请使用其他方法来实现您想要的效果。例如,如果它是一个输入控件,则将其设置为只读状态可能已经足够,而不是禁用它。由于您的问题没有真正解释为什么需要这样做,因此我无法猜测对您来说正确的方法是什么。


1
实际上我的问题是当鼠标进入控件时设置新的工具提示。我注意到即使控件被禁用(没有内容),由于 ToolTipService.ShowOnDisabled 属性,工具提示仍然可以弹出。如何捕获鼠标进入事件? - pilavust
1
@pilavust 控件本身无法处理此事件。这是因为它没有接收到该事件。似乎是间接来自InputManager.Current.PostProcessInput。但也许ToolTipService.AddToolTipOpeningHandler对您来说更合适? - user743382

3

也许你可以在自定义控件周围加上一个ContentControl(必须始终启用),并处理ContentControlMouseEnter事件。


很遗憾,我无法更改控制结构。我的目标只是模拟MouseEnter事件。 - pilavust

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接