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

时间:2016-02-08 02:29:07

标签: c# wpf xaml binding xceed

根据彼得的建议重新工作。

我有一个xceed DateTimePicker。这接受DateTime?要显示和绑定的值。

我有一个特殊日期 - 1900-01-01 00:00:00

如果我将此日期传递给DateTimePicker,我希望将其视为传入null - 即,未显示日期。

当我检索该值时,如果日期尚未设置为null,我想返回相同的特殊日期 - 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和绑定实现同样的事情吗?

1 个答案:

答案 0 :(得分:0)

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

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}}"
相关问题