Xaml 绑定到附加的 属性 引用另一个 属性

Xaml binding to attached property referencing another property

根据 Peter 的建议重新设计。

我有一个 xceed DateTimePicker。这接受一个日期时间?要显示和绑定到的值。

我有一个特别的约会 – 1900-01-01 00:00:00

如果我将此日期传递到 DateTimePicker,我希望它被视为我传递了空值——即不显示日期。

当我检索值时,如果日期未设置为空,我想 return 相同的特殊日期 – 1900-01-01 00:00:00.

对于所有其他日期,无论输入什么都会输出。

在后面的代码中我可以这样做(伪代码):

        DateTime SpecialDate = new DateTime(1900,1,1,0,0,0)
        DateTime TestDate = new DateTime(2016, 2, 8, 10, 0, 0);

        DateTimePicker dtp = new DateTimePicker();


        // Setting value.
        if (TestDate != SpecialDate)
            dtp.Value = TestDate;

        // Getting value
        if (dtp.Value == null)
            return SpecialDate;
        else
            return (DateTime)dtp.Value;

我可以使用 Xaml 和绑定实现同样的事情吗?

使用简单的转换器来转换和转换回值:

public class DateTimeToSentinalDateConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (System.Convert.ToDateTime(value).Equals(new DateTime(1900, 1, 1, 0, 0, 0)))
        {
            return null;
        }
        else
        {
            return value;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
        {
            return new DateTime(1900, 1, 1, 0, 0, 0);
        }
        else
        {
            return value;
        }
    }
}

并且在 XAMl 中绑定将是:

Value="{Binding Path=Date , Converter={StaticResource DateTimeToSentinalDateConverter}}"