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);
}
}
{
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 == null) return 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 != null) return result;
}
return null;
{
if (depObj == null) return 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 != null) return result;
}
return null;
}
void DatePicker_Loaded(object sender, RoutedEventArgs e)
{
var dp = sender as DatePicker;
if (dp == null) return;
var tb = GetChildOfType<DatePickerTextBox>(dp);
if (tb == null) return;
var wm = tb.Template.FindName("PART_Watermark", tb) as ContentControl;
if (wm == null) return;
wm.Content = "请选择日期";
{
var dp = sender as DatePicker;
if (dp == null) return;
var tb = GetChildOfType<DatePickerTextBox>(dp);
if (tb == null) return;
var wm = tb.Template.FindName("PART_Watermark", tb) as ContentControl;
if (wm == null) return;
wm.Content = "请选择日期";
}
以上方法可以项目里所有DatePicker的默认显示问题。
最终效果
标签:
DatePicker控件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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框架的用法!