[英]Set backing nullable DateTime field to null with DatePicker trigger?
I have the following code: 我有以下代码:
<CheckBox Name="MinDateCheck"></CheckBox>
<DatePicker IsEnabled="{Binding ElementName=MinDateCheck, Path=IsChecked}">
<DatePicker.Style>
<Style TargetType="{x:Type DatePicker}">
<Setter Property="SelectedDate" Value="{Binding MinDate}" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="SelectedDate" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
</DatePicker.Style>
</DatePicker>
Where MinDate
is a property of type DateTime?
MinDate
是DateTime?
类型的属性DateTime?
. 。
My issue is that the IsEnabled
trigger does not work as I expect. 我的问题是IsEnabled
触发器无法按预期工作。 The underlying MinDate
field is not changed to null when the DatePicker
is disabled. 禁用DatePicker
时,基础MinDate
字段不会更改为null。
Is this possible? 这可能吗? I could achieve the effect I need by introducing another backing field called IsMinDateEnabled
, but I'd rather avoid that if possible. 我可以通过引入另一个支持字段IsMinDateEnabled
来达到所需的效果,但如果可能的IsMinDateEnabled
,我宁愿避免这种情况。
<Style TargetType="{x:Type DatePicker}">
<Setter Property="SelectedDate" Value="{Binding MinDate}" />
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="SelectedDate" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
Try to set IsEnabled default value.Some times it works.Try it once.
May have easier solution. 可能有更简单的解决方案。 But it works. 但这有效。
<CheckBox Name="MinDateCheck" IsChecked="{Binding MinDate, Converter={StaticResource DateTimeConverter}, Mode=OneWayToSource}"></CheckBox>
<DatePicker IsEnabled="{Binding ElementName=MinDateCheck, Path=IsChecked}"
SelectedDate="{Binding MinDate}">
<DatePicker.Style>
<Style TargetType="{x:Type DatePicker}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="SelectedDate" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
</DatePicker.Style>
</DatePicker>
class DateTimeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(bool)value)
{
return null;
}
else
{
return DependencyProperty.UnsetValue;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.