Чтобы получить пустое значение в ViewModel, когда DatePickerTextBox становится пустым в элементе управления Datepicker - PullRequest
0 голосов
/ 08 июня 2018

У меня есть DatePicker, чье SelectedDate связано со свойством CLR с двусторонней привязкой в ​​ViewModel с именем VMStartDate.Когда пользовательский интерфейс открывается, по умолчанию в окне выбора даты отображается сегодняшняя дата.

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>

ViewModel.cs

private DateTime _VMStartDate;

public DateTime VMStartDate
{
    get { return _VMStartDate; }
    set { SetProperty(ref _VMStartDate, value); }
}

Я хочу, чтобы DatePicker отображал пустую строку, пока пользователь не выберет дату или не удалит ее.

1 Ответ

0 голосов
/ 08 июня 2018

Как предложил Гиллидак в комментарии, сделав значение DateTime обнуляемым, вы получите желаемый эффект.Это метод, который я широко использовал, чтобы по умолчанию DateTime была пустой ячейкой.При этом ваша собственность будет выглядеть следующим образом.

private DateTime? _VMStartDate = null;

public DateTime? VMStartDate
{
    get { return _VMStartDate; }
    set { SetProperty(ref _VMStartDate, value); }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...