Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DateTimeOffset微绑定到DatePicker_C#_Wpf_Mvvm_Datepicker_Caliburn.micro - Fatal编程技术网

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,则添加到开头;