DatePicker 修改默认值 select a date

 

首先这个问题困扰了我还一阵子,DatePicker控件在有的系统中默认情况下,如果没有显示日期,那么将会显示文本“选择日期”作为显示内容。在有的系统中显示的是英文"select a date"。

 

 

 

      对于这个问题,程序要求必须一致,于是我用了各种方式,开始修改。以下是修改后的最终版,对于有需要的同行,你们完全可以直接使用了。
      你可以定义默认显示的任何内容。

      具体修改方法:

        首先,在您的应用程序APP中的OnStartup方法,你要注册一个全局事件处理程序来控制DatePicker控件的Loaded事件  

 

 

复制代码
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            try
            {
                base.OnStartup(e);
                EventManager.RegisterClassHandler(typeof(DatePicker),
                    DatePicker.LoadedEvent,
                    new RoutedEventHandler(DatePicker_Loaded));
            }
            catch (Exception ex)
            {
                SystemLog.WriteRunLog(ex);
            }
        }

    } 

复制代码

 

复制代码
        public static T GetChildOfType<T>(DependencyObject depObj) where T : DependencyObject
        {
            if (depObj == nullreturn null;

            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
            {
                var child = VisualTreeHelper.GetChild(depObj, i);

                var result = (child as T) ?? GetChildOfType<T>(child);
                if (result != nullreturn result;
            }
            return null;

        } 

复制代码

  

复制代码
        void DatePicker_Loaded(object sender, RoutedEventArgs e)
        {
            var dp = sender as DatePicker;
            if (dp == nullreturn;

            var tb = GetChildOfType<DatePickerTextBox>(dp);
            if (tb == nullreturn;

            var wm = tb.Template.FindName("PART_Watermark", tb) as ContentControl;
            if (wm == nullreturn;

            wm.Content = "请选择日期";

        } 

复制代码

 

以上方法可以项目里所有DatePicker的默认显示问题。 

 

最终效果 

 


 

posted @   Popeye-lxw  阅读(2042)  评论(1编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示