C# 将DateTimeOffset微绑定到DatePicker
我需要将C# 将DateTimeOffset微绑定到DatePicker,c#,wpf,mvvm,datepicker,caliburn.micro,C#,Wpf,Mvvm,Datepicker,Caliburn.micro,我需要将DateTimeOffset属性绑定到WPF日期选择器,因为Odata不支持DateTime。 我知道如何绑定DateTime属性 我已尝试将DateTimeOffset属性绑定到日期选择器,与绑定DateTime属性相同 但价值根本没有改变。它始终具有默认值 如何解决这个问题?按照杰克的建议将其转换为日期时间。要避免注释中描述的错误,请将BindingMode设置为OneWay “{Binding Path=MyProperty,Mode=OneWay}”尝试使用此值转换器 publi
DateTimeOffset
属性绑定到WPF日期选择器,因为Odata不支持DateTime
。
我知道如何绑定DateTime
属性
我已尝试将DateTimeOffset
属性绑定到日期选择器,与绑定DateTime
属性相同
但价值根本没有改变。它始终具有默认值
如何解决这个问题?按照杰克的建议将其转换为日期时间。要避免注释中描述的错误,请将BindingMode设置为OneWay
“{Binding Path=MyProperty,Mode=OneWay}”尝试使用此值转换器
public class DateTimeToDateTimeOffsetConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
DateTimeOffset dto = (DateTimeOffset)value;
return dto.DateTime;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
DateTime date = (DateTime)value;
return new DateTimeOffset(date);
}
}
我使用
DataTimeOffset.DateTime
属性将此解决方案基于:转换为DateTime
。您已经知道如何绑定它,这可能比了解如何绑定DateTimeOffset
要快。谢谢Jack,它在保存记录时起作用。但我在检索记录时出错了。“双向或单向ToSource绑定无法在类型为'System.DateTimeOffset'的只读属性'DateTime'上工作。”。你知道吗?我同意,但添加bindingmode=OneWay只会设置从数据源到UI元素的值。在UI元素(DatePicker)中所做的更改不会反映在数据源中,对吗?如何在DatePicker中更改日期并将其保存回DB?我怎样才能添加空值呢?虽然名称是倒过来的,但它工作得很好。它应该是DateTimeOffsetToDateTimeConverter。另外,要处理空值,请将第一行更改为DateTimeOffset?dto=(DateTimeOffset?)值;在convert back中,如果(value==null)返回null,则添加到开头;