聚会有点晚了,但在网上寻找解决方案后,我终于找到了一个。
在 Blazor 应用程序的顶层创建文件 EventHandlers.cs 并使用以下代码填充它:
[EventHandler("onmouseleave", typeof(MouseEventArgs), true, true)]
[EventHandler("onmouseenter", typeof(MouseEventArgs), true, true)]
public static class EventHandlers {
}
现在您应该能够在 html 元素上声明事件回调,就像使用 @onmouseout 等一样。
<div id="nav-bar" class="@collapseNavigationFlag" @onmouseenter="ExpandNavigation" @onmouseleave="CollapseNavigation">
这是一个非常不明显且看似没有文档记录的解决方案,我通过破译半答案的 Blazor 讨论设法将其拼凑在一起。我不是 100% 确定该文件必须被称为 EventHandlers.cs,它可能不是我没有尝试过,而且我不是 100% 确定它必须放置在您的应用程序的顶层,我再次没有尝试过没试过。
我很高兴终于让它工作了,不确定这个方法的稳定性,到目前为止没有遇到任何问题,但不能排除任何奇怪的情况,因为我想 Blazor 不直接支持 onmouseenter/onmouseleave 是有原因的盒子?
对于此问题还有另一种解决方法,设置pointer-events:none;
然而,在子元素的 css 上,此方法阻止了任何交互性,例如选项的颜色更改、鼠标滚动和此类性质的事物。
希望这个答案可以帮助那些遇到同样问题的人,因为 onmouseenter 和 onmouseleave 是开发交互式 Web ui 时的一个重要功能。