当前位置: 首页 > news >正文

WPF自定义日历选择控件

目录

XAML样式代码:

XAML调用自定义样式

C#后端响应函数


效果对比:

原控件:

自定义样式:

  • XAML样式代码:

    <Window.Resources><Style x:Key="CustomDatePickerStyle" TargetType="DatePicker"><Setter Property="BorderBrush" Value="Gray"/><Setter Property="BorderThickness" Value="1"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="DatePicker"><Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><!-- 文本部分(居中) --><DatePickerTextBox x:Name="PART_TextBox" Grid.Column="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="18" Background="Transparent" BorderThickness="0"/><!-- 日历按钮(放大并靠右) --><ToggleButton x:Name="PART_Button" Grid.Column="1" Width="40" Height="40" FontSize="24" Content="📅" Background="Transparent" BorderThickness="0" Click="ToggleCalendarPopup" Focusable="False"/><!-- 弹出日历 --><Popup x:Name="PART_Popup" Placement="Bottom" PlacementTarget="{Binding ElementName=PART_Button}" StaysOpen="False"><Border Background="White" BorderBrush="LightGray" BorderThickness="1"><Calendar x:Name="PART_Calendar" DisplayDate="{TemplateBinding DisplayDate}" SelectedDate="{TemplateBinding SelectedDate}"/></Border></Popup></Grid></Border><!-- 控制弹出逻辑 --><ControlTemplate.Triggers><Trigger Property="IsDropDownOpen" Value="True"><Setter TargetName="PART_Popup" Property="IsOpen" Value="True"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></Window.Resources>
  • XAML调用自定义样式

<DatePicker Style="{StaticResource CustomDatePickerStyle}" FontSize="22" BorderThickness="1"/>
  • C#后端响应函数

        //手动绑定日历选择private void ToggleCalendarPopup(object sender, RoutedEventArgs e){if (sender is ToggleButton button &&button.TemplatedParent is DatePicker picker){picker.IsDropDownOpen = !picker.IsDropDownOpen;}}

http://www.lryc.cn/news/588022.html

相关文章:

  • ZYNQ双核通信终极指南:FreeRTOS移植+OpenAMP双核通信+固化实战
  • spark广播表大小超过Spark默认的8GB限制
  • 大数据系列之:通过trino查询hive表
  • pyspark中map算子和flatmap算子
  • kettle从入门到精通 第103课 ETL之kettle kettle读取redis中的Hash数据
  • IOS开发者账号如何添加 uuid 原创
  • 图机器学习(1)——图论基础
  • [硬件电路-22]: 为什么模拟电路信号处理运算的精度不如数字信号处理运算?
  • flink 中配置hadoop 遇到问题解决
  • 基于MaxCompute MaxFrame 汽车自动驾驶数据预处理最佳实践
  • WST2078 N+P 双通道 MOSFET 在蓝牙耳机中的技术适配
  • FreeSWITCH fifo模块排队并动态播放排队位置
  • 12.如何判断字符串是否为空?
  • AI驱动的软件工程(下):AI辅助的质检与交付
  • SpringBoot 整合 MyBatis-Plus
  • 智源全面开源RoboBrain 2.0与RoboOS 2.0:刷新10项评测基准,多机协作加速群体智能
  • LangChain面试内容整理-知识点16:OpenAI API接口集成
  • docker-compose 安装Alist
  • rk3588ubuntu 系统移植AIC8800D Wi-Fi6/BT5.0芯片
  • FRP Ubuntu 服务端 + MacOS 客户端配置
  • mac安装nvm执行命令报错-解决方案
  • Ubuntu服务器安装Miniconda
  • 131. Java 泛型 - 目标类型与泛型推断
  • 一般的非线性规划求解(非凸函数)
  • 深度解析:htmlspecialchars 与 nl2br 结合使用的前后端协作之道,大学毕业论文——仙盟创梦IDE
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GithubProfies(GitHub 个人资料)
  • 持续优化小程序排名,稳定获取搜索流量
  • 动态规划题解——最长递增子序列【LeetCode】记忆化搜索方法
  • 掉线监测-tezos rpc不能用,改为残疾网页监测
  • urlencode、html实体编码、unicode