WPF DatePicker, отображение сегодняшней даты со связыванием с собственностью

Это возможный дубликат для установки даты по умолчанию для WPF Date Picker в текущую дату, но я пробовал код из вопроса, и он не работает, надеюсь, что мне не хватает чего-то простого

ОК, как говорится в вопросе, я хочу отображать текущую дату при загрузке представления, однако у меня есть свойство SelectedDate, ограниченное моим свойством, и я не думаю, что вы можете использовать "Текст", потому что свойство, которое я связываю с является свойством DateTime. да, я мог бы сделать конвертацию в модели, но XAML (я думаю) должен уметь это сделать для меня.

OK Я знаю, в чем проблема, дата выходила "01/01/0001", потому что, конечно, ее привязка к моему свойству, которое по умолчанию было 01/01/0001, поэтому, я думаю, мне нужно будет сделать код С# в моей собственности, чтобы сказать, если его 01/01/0001, используйте DateTime.Now, а если нет, используйте свойство.

XAML

    <DatePicker HorizontalAlignment="Left" 
                DisplayDate="{x:Static System:DateTime.Now}"
                SelectedDate="{Binding AvailableFrom, Mode=TwoWay}"
                Margin="139,58,0,0" 
                VerticalAlignment="Top" 
                Width="120"/> 

Я счастлив удалить это после того, как крупные представители считают, что это дубликат,

Что я сделал, чтобы решить...

     get
     {

         if (m_AvailableFrom == DateTime.MinValue)
             return DateTime.Now;

        return m_AvailableFrom;
     }

Приветствия за помощь

Ответ 1

Я лично просто назначил DateTime.Now свойству AvailableFrom в коде ViewModel.

Если вы хотите использовать XAML, один из вариантов заключается в том, чтобы сделать свойство AvailableFrom DateTime? (с нулевым значением DateTime), а не с DateTime. Тогда значение по умолчанию равно null, а не "01/01/0001".

Затем в вашем XAML вы можете использовать

xmlns:System="clr-namespace:System;assembly=mscorlib"

<DatePicker
    HorizontalAlignment="Left"
    SelectedDate="{Binding
        Path=AvailableFrom,
        Mode=TwoWay,
        TargetNullValue={x:Static System:DateTime.Now}}"
    Margin="139,58,0,0" 
    VerticalAlignment="Top" 
    Width="120" />

и пользовательский интерфейс отобразит текущую дату в любое время, когда AvailableFrom имеет значение null.

Ответ 2

Ссылка MSDN для свойства SelectedDate ниже показывает его как NULL. Я думаю, вместо того, чтобы возвращать DateTime.Now, просто верните null, если он не установлен, и я подозреваю, что, как и другие элементы управления с полями с нулевым значением, он просто ничего не отображает.

DatePicker.SelectedDate Ссылка MSDN

Ответ 3

<DatePicker HorizontalAlignment="Left"                 
        SelectedDate="{Binding AvailableFrom, Mode=TwoWay}"
        DisplayDate="{Binding DateTime.Now}"                
        Margin="139,58,0,0" 
        VerticalAlignment="Top" 
        Width="120"/>

* Использовать DisplayDate после SelectedDate

отметьте, если это полезное спасибо!