You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinRT TimePicker绑定属性值不显示,始终选中0:00问题求助

问题核心原因

WinRT/WinUI 体系下 TimePicker 控件的 Time 属性要求绑定的是 TimeSpan 类型,代表「自当日午夜以来的时间长度」,你当前绑定的是格式化后的字符串,XAML 绑定逻辑无法识别自定义格式的时间字符串,所以赋值失效,控件默认显示0:00,不属于控件bug。

修复方案
  1. 调整ViewModel属性定义,将原字符串类型的SystemTime改为TimeSpan类型,无需自行做时间格式化:
TimeSpan SystemTime() const 
{
    return m_systemTime;
}

void SystemTime(TimeSpan value)
{
    __super::SetProperty(m_systemTime, value, L"SystemTime");
}
  1. 赋值时直接使用你提供的午夜时长获取方法,不需要经过DateTimeFormatter处理:
SystemTime(duration_since_midnight());
  1. 原有XAML代码不需要调整,你已经配置的ClockIdentifier="24HourClock"会自动让控件按24小时制展示时间,符合需求。

如果确实有业务场景需要保留字符串类型的属性存储,可以额外实现IValueConverter接口,在转换器中完成自定义时间字符串到TimeSpan的双向转换,不过该方案会增加冗余逻辑,优先推荐直接调整属性类型的方案。

内容的提问来源于stack exchange,提问作者sohel14_cse_ju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:36:00