Silverlight - Tip: 使用UIElement.AddHandler捕获已被处理的RoutedEvent

本文探讨了ListBox中MouseLeftButtonDown事件不触发的问题及原因,并提供了解决方案:使用UIElement.AddHandler方法订阅已标记为handled的事件。

问题: 项目中有一个ListBox, 订阅了ListBox的MouseLeftButtonDown事件后,会发现你的事件处理方法根本不会被触发。

原因: 在ListBox中,MouseLeftButtonDown事件是一个RoutedEvent , 并且在routing过程中被标记为handled, 因此ListBox不会再抛出该事件,因此你的事件处理方法也无从相应。

解决: 使用UIElement.AddHandler 方法可以订阅已经被handled的事件。

myListBox.AddHandler(ListBox.MouseLeftButtonDownEvent, new MouseButtonEventHandler(myListBox_MouseLeftButtonDown), true);

void myListBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//logic goes here
}

`attempted index: isEmpty of non-table: null function: doMenuTooltip -- file: ISVehicleMechanics.lua line # 845 | Vanilla function: doMenuTooltip -- file: 63beetle_PartInfo.lua line # 6 | MOD: '63 Volkswagen 1300 Beetle function: doMenuTooltip -- file: 73fordFalcon_PartInfo.lua line # 6 | MOD: '73 Ford Falcon function: doMenuTooltip -- file: 82firebird_partInfo.lua line # 6 | MOD: '82 Pontiac Firebird function: doMenuTooltip -- file: 87toyotaMR2_partInfo.lua line # 6 | MOD: '87 Toyota MR2 function: doMenuTooltip -- file: 89dodgeCaravan_client.lua line # 86 | MOD: '89 Dodge Caravan function: doMenuTooltip -- file: 91nissan240sx_partInfo.lua line # 6 | MOD: '91 Nissan 240SX function: doMenuTooltip -- file: 92jeepYJ_PartInfo.lua line # 6 | MOD: '92 Jeep Wrangler YJ function: doMenuTooltip -- file: 93chevySuburban_client.lua line # 68 | MOD: '93 Chevrolet Suburban / Silverado function: doMenuTooltip -- file: 93fordF350_client.lua line # 91 | MOD: '93 Ford F-Series function: doMenuTooltip -- file: ATA2_Hack_ISVehicleMechanics.lua line # 10 | MOD: Tsar's Common Library v.2.07 function: doPartContextMenu -- file: ISVehicleMechanics.lua line # 237 | Vanilla function: doPartContextMenu -- file: DebugMenuCore.lua line # 101 | MOD: 调试菜单(DebugMenu)B42 function: onListRightMouseUp -- file: ISVehicleMechanics.lua line # 204 | Vanilla java.lang.RuntimeException: attempted index: isEmpty of non-table: null at se.krka.kahlua.vm.KahluaThread.tableget(KahluaThread.java:1462) at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:458) at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:166) at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1754) at se.krka.kahlua.vm.KahluaThread.pcallBoolean(KahluaThread.java:1690) at se.krka.kahlua.integration.LuaCaller.protectedCallBoolean(LuaCaller.java:96) at zombie.ui.UIElement.onRightMouseUp(UIElement.java:1695) at zombie.ui.UIElement.onRightMouseUp(UIElement.java:1660) at zombie.ui.UIElement.onConsumeMouseButtonUp(UIElement.java:1518) at zombie.ui.UIManager.updateMouseButtons(UIManager.java:742) at zombie.ui.UIManager.update(UIManager.java:615) at zombie.GameWindow.logic(GameWindow.java:298) at zombie.GameWindow.frameStep(GameWindow.java:790) at zombie.GameWindow.mainThreadStep(GameWindow.java:552) at zombie.MainThread.mainLoop(MainThread.java:68) at java.base/java.lang.Thread.run(Unknown Source) `这个能看出来了吗
11-17
`function: doPartContextMenu -- file: ISVehicleMechanics. lua line # 226 | Vanilla function: onListRightMouseUp -- file: ISVehicleMechanics. lua line # 204 | Vanilla java.lang.RuntimeException: attempted index: isEmpty of non-table: null at se.krka.kahlua.vm.KahluaThread.tableget(KahluaThread.java:1462) at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:458) at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:166) at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1754) at se.krka.kahlua.vm.KahluaThread.pcallBoolean(KahluaThread.java:1690) at se.krka.kahlua.integration.LuaCaller.protectedCallBoolean(LuaCaller.java:96) at zombie.ui.UIElement.onRightMouseUp(UIElement.java:1695) at zombie.ui.UIElement.onRightMouseUp(UIElement.java:1660) at zombie.ui.UIElement.onConsumeMouseButtonUp(UIElement.java:1518) at zombie.ui.UIManager.updateMouseButtons(UIManager.java:742) at zombie.ui.UIManager.update(UIManager.java:615) at zombie.GameWindow.logic(GameWindow.java:298) at zombie.GameWindow.frameStep(GameWindow.java:790) at zombie.GameWindow.mainThreadStep(GameWindow.java:552) at zombie.MainThread.mainLoop(MainThread.java:68) at java.base/java.lang.Thread.run(Unknown Source) ``attempted index: isEmpty of non-table: null java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method. invoke(Unknown Source) at se.krka.kahlua.integration.expose.caller.MethodCaller.call(MethodCaller.java:60) at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:206) at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:196) at se.krka.kahlua.vm.KahluaThread.callJava(KahluaThread.java:182) at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:803) at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:166) at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1754) at se.krka.kahlua.vm.KahluaThread.pcallBoolean(KahluaThread.java:1690) at se.krka.kahlua.integration.LuaCaller.protectedCallBoolean(LuaCaller.java:96) at zombie.ui.UIElement.onRightMouseUp(UIElement.java:1695) at zombie.ui.UIElement.onRightMouseUp(UIElement.java:1660) at zombie.ui.UIElement.onConsumeMouseButtonUp(UIElement.java:1518) at zombie.ui.UIManager.updateMouseButtons(UIManager.java:742) at zombie.ui.UIManager.update(UIManager.java:615) at zombie.GameWindow.logic(GameWindow.java:298) at zombie.GameWindow.frameStep(GameWindow.java:790) at zombie.GameWindow.mainThreadStep(GameWindow.java:552) at zombie.MainThread.mainLoop(MainThread.java:68) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException: Cannot invoke "java.util.ArrayList. contains(Object)" because the return value of "zombie.scripting.objects.Fixing. getRequiredItem()" is null at zombie.inventory.FixingManager.getFixes(FixingManager.java:30) ... 23 more ``Callframe at: getFixes function: doPartContextMenu -- file: ISVehicleMechanics. lua line # 225 | Vanilla function: onListRightMouseUp -- file: ISVehicleMechanics. lua line # 204 | Vanilla `这些是僵尸毁灭工程的一些报错,能看出来是哪些模组造成的吗
11-17
`function: render -- file: eris_food_expiry.lua line # 265 | MOD: eris_food_expiry function: render -- file: InventoryUI.lua line # 82 | MOD: Starlit Library function: render -- file: KATTAJ1_TooltipFixer.lua line # 13 | MOD: KATTAJ1 Clothes Core function: render -- file: Skill Recovery Journal Tooltip.lua line # 296 | MOD: Skill Recovery Journal java.lang.RuntimeException: __concat not defined for operands: Eris Food Expiry - Resolution: and table 0x1969173536 at se.krka.kahlua.vm.KahluaUtil.fail(KahluaUtil.java:101) at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:649) at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:174) at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1826) at se.krka.kahlua.vm.KahluaThread.pcallvoid(KahluaThread.java:1668) at se.krka.kahlua.integration.LuaCaller.pcallvoid(LuaCaller.java:38) at zombie.ui.UIElement.render(UIElement.java:2009) at zombie.ui.UIManager.render(UIManager.java:419) at zombie.gameStates.IngameState.renderFrameUI(IngameState.java:1332) at zombie.gameStates.IngameState.renderframeui(IngameState.java:1318) at zombie.gameStates.IngameState.renderInternal(IngameState.java:1457) at zombie.gameStates.IngameState.render(IngameState.java:1407) at zombie.gameStates.GameStateMachine.render(GameStateMachine.java:28) at zombie.GameWindow.renderInternal(GameWindow.java:476) at zombie.GameWindow.frameStep(GameWindow.java:948) at zombie.GameWindow.mainThreadStep(GameWindow.java:647) at zombie.MainThread.mainLoop(MainThread.java:76) at java.base/java.lang.Thread.run(Unknown Source) `这个错误这么多是哪个模组和他们冲突了
10-20
AI智能图表创作平台,轻松对话绘图 Next AI Draw.io 是一款融合大语言模型与 draw.io 的创新型图表绘制平台。无需掌握复杂的绘图规则,只需通过自然语言输入,即可完成图表构建、修改与增强,帮助开发者和可视化创作者大幅提升效率。无论你是想绘制 AWS 架构图、GCP 拓扑,还是一个带有动画连接器的系统结构图,这款工具都能通过智能对话快速呈现。 核心亮点 LLM驱动的图表构建 通过 Chat 接口与 AI 对话,快速生成符合语义的图表,轻松支持 draw.io XML 格式解析。 图像识别与复制增强 上传一张已有图表或架构草图,AI 自动识别结构并重建图表,可进一步优化样式或内容。 图表版本管理 内置图表历史记录系统,支持版本切换与回滚,便于团队协作与修改回溯。 交互式绘图对话体验 内置对话界面,可边聊边画图,所见即所得,轻松优化图表结构与排版。 多云架构模板一键生成 支持 AWS、GCP、Azure 架构图自动生成,适配图标库,适合开发、运维、架构师使用。 GCP架构图 动画连接器 支持为图表元素添加动态连接器,提升图表交互性与演示感。 技术架构与支持 Next.js:提供稳定高性能的前端体验 Vercel AI SDK:整合流式对话与多模型支持 react-drawio:实现图表编辑与可视化渲染 多模型接入:支持 OpenAI、Anthropic、Google、Azure、DeepSeek、Ollama 等主流 AI API claude-sonnet-4-5 专项训练:在 AWS 架构图任务上表现优异
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值