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}}"
根据 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}}"