C# 当Datepicker控件上的DatePickerTextBox为空时,在ViewModel中获取空值的步骤
我有一个日期选择器,其C# 当Datepicker控件上的DatePickerTextBox为空时,在ViewModel中获取空值的步骤,c#,wpf,datetime,mvvm,datepicker,C#,Wpf,Datetime,Mvvm,Datepicker,我有一个日期选择器,其SelectedDate绑定到名为VMStartDate的ViewModel中具有双向绑定的CLR属性。当UI打开时,日期选择器上显示的默认日期是今天的日期 View.xaml <DatePicker Width="160" Height="35" SelectedDate="{Binding Path=VMStartDate,Mode=TwoWay, TargetNullValue=
SelectedDate
绑定到名为VMStartDate
的ViewModel中具有双向绑定的CLR属性。当UI打开时,日期选择器上显示的默认日期是今天的日期
View.xaml
<DatePicker Width="160" Height="35"
SelectedDate="{Binding Path=VMStartDate,Mode=TwoWay,
TargetNullValue={x:Static sys:DateTime.Now}}">
<DatePicker.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<TextBox x:Name="PART_TextBox" Height="28" BorderBrush="Transparent"
VerticalContentAlignment="Center" VerticalAlignment="Center"
BorderThickness="0" FontSize="14"
Text="{Binding Path=SelectedDate, StringFormat='dd/MM/yyyy',
RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}"
Validation.ErrorTemplate="{x:Null}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DatePicker.Resources>
</DatePicker>
我希望
日期选择器
显示一个空字符串,直到用户选择或删除日期。正如gilliduck在评论中建议的那样,使日期时间
为空,将为您提供所需的效果。这就是我一直在广泛使用的方法,使DateTime的默认值为空单元格。这样,你的财产就会像这样
private DateTime? _VMStartDate = null;
public DateTime? VMStartDate
{
get { return _VMStartDate; }
set { SetProperty(ref _VMStartDate, value); }
}
让属性为null不应该这样做吗?记忆对我来说是无法证实的,我也无法通过测试来证实,但直觉告诉我,如果你做了公共约会时间?VmStartDate{get;set;}您应该很好。
private DateTime? _VMStartDate = null;
public DateTime? VMStartDate
{
get { return _VMStartDate; }
set { SetProperty(ref _VMStartDate, value); }
}