尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Avalonia Calendar 日历控件遇到 Flyout 或者切换页面时出现的鼠标按下失效的解决方法

Avalonia Calendar 日历控件遇到 Flyout 或者切换页面时出现的鼠标按下失效的解决方法
📅 发布时间:2026/6/20 12:47:58

Avalonia Calendar 日历控件遇到 Flyout 或者切换页面时出现的鼠标按下失效的解决方法

省流:把事件订阅从 DataContextChanged 改为路由事件订阅

一、背景

出现的问题:当点击了日期后,第二次打开,鼠标偶尔仍然处于按下的状态擅自选择了一个日期并执行了事件。

image

这是一个点击按钮展开日历的一个控件,我们的 Xaml 和 Code-Behind C# 是这样写的:

        <Buttonx:Name="PART_Button"Width="100"Height="100"><Button.Flyout><Flyout><Calendar  DataContextChanged="Calendar_DataContextChanged"   /></Flyout></Button.Flyout></Button>
        private void Calendar_SelectedDatesChanged_1(object? sender, Avalonia.Controls.SelectionChangedEventArgs e){PART_Button.Flyout.Hide();}

二、解决方法

把事件订阅从 DataContextChanged 改为 路由事件订阅按钮

   <Buttonx:Name="PART_Button"Width="100"Height="100"><Button.Flyout><Flyout><Calendar Button.Click="Calender_ButtonClick" /></Flyout></Button.Flyout></Button>
        private void Calender_ButtonClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e){if (e.Source is not CalendarDayButton) return;PART_Button.Flyout.Hide();}

三、如果路由事件写不上怎么办?

你可以在 Code-Behind C# 的代码部分随着控件初始化的时候附加,就像这样:

   <Buttonx:Name="PART_Button"Width="100"Height="100"><Button.Flyout><Flyout><Calendar x:Name="PART_Calendar" /></Flyout></Button.Flyout></Button>

C# 的部分请这样做。

        protected override void OnLoaded(RoutedEventArgs e){base.OnLoaded(e);PART_Calendar.RemoveHandler(Button.ClickEvent, Calender_ButtonClick); // 避免多个重复事件订阅导致触发多次PART_Calendar.AddHandler(Button.ClickEvent, Calender_ButtonClick);}private void Calender_ButtonClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e){if (e.Source is not CalendarDayButton) return;PART_Button.Flyout.Hide();}

相关新闻

  • Vue 2 + Element UI 技术栈的管理端项目和Git使用教程
  • ubuntu22.04.5系统重启后网络配置消失问题
  • 第十届计算机技术与机械电气工程国际学术论坛(ISCME 2025)暨2025年泰山学术论坛-鲁东大学微纳传感器及系统专题论坛

最新新闻

  • 2026南充市圣罗兰+赛琳+巴黎世家包包专业回收,2026甄选回收店铺排行榜推荐 - 谊识预商贸
  • WSL中部署DeepSeek V4 Pro与Codex全链路实战指南
  • 权威控制检索:在垂直领域知识库中实现精准可信的信息获取
  • SCF5250总线时序与中断控制器实战配置详解
  • 2026寿县装修预算控不住?铂悦府业主亲述:闭口合同如何锁死增项 - 装企自媒体训练营辉哥
  • Java国密SM2算法实战:基于Hutool的加密解密与签名验签完整指南

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号