Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当Datepicker控件上的DatePickerTextBox为空时,在ViewModel中获取空值的步骤_C#_Wpf_Datetime_Mvvm_Datepicker - Fatal编程技术网

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); }
}