WPF中PersianDatePicker如何以yyyy/mm/dd短格式显示日期
解决PersianDatePicker日期显示格式与赋值报错问题
首先咱们拆解下你遇到的核心问题:
常规DatePicker的Text属性类型是string,所以直接把日期转成字符串赋值完全没问题;但PersianDatePicker的Text属性类型是Arash.PersianDate(不是字符串),这就导致你直接赋值ToString()后的字符串触发了类型不匹配错误。
下面给你两种可行的解决思路:
思路1:正确赋值PersianDate对象并指定显示格式
- 转换日期类型:如果
query.ImgDateRequest是.NET DateTime类型,先把它转换成Arash.PersianDate对象:
// 将DateTime转换为PersianDate类型 var targetPersianDate = new Arash.PersianDate(query.ImgDateRequest);
- 赋值给控件的专用属性:不要直接赋值
Text,而是设置控件的SelectedDate(这类日期选择控件通常都会提供这个属性):
ImgDateReq.SelectedDate = targetPersianDate;
- 在XAML中设置短格式:通过控件的
DateFormat属性(该控件大概率支持)指定显示格式为yyyy/mm/dd:
<PersianDateControls:PersianDatePicker x:Name="ImgDateReq" DateFormat="yyyy/mm/dd"/>
思路2:通过绑定直接指定格式(更优雅的方式)
如果PersianDatePicker支持绑定格式化,你可以直接在XAML中绑定数据并指定显示格式,无需后台手动赋值:
<PersianDateControls:PersianDatePicker x:Name="ImgDateReq" SelectedDate="{Binding ImgDateRequest, StringFormat='yyyy/mm/dd'}"/>
这种方式下,后台只需要确保ImgDateRequest能被正确转换为Arash.PersianDate即可,不需要手动操作Text属性。
额外注意
如果query.ImgDateRequest本身就是Arash.PersianDate类型,那直接赋值SelectedDate就行,完全不需要调用ToString():
ImgDateReq.SelectedDate = query.ImgDateRequest;
内容的提问来源于stack exchange,提问作者farzadini
相关产品推荐
相关产品推荐

