.net 如何使用数据绑定在datepicker中设置今天的日期?

.net 如何使用数据绑定在datepicker中设置今天的日期?,.net,wpf,.net-core,data-binding,.net,Wpf,.net Core,Data Binding,目前我正在使用日期选择器: <DatePicker Name="dpEmailConfirmed1" Grid.Row="1" Grid.Column="3" SelectedDate="{Binding EmailConfirmation}" Margin="5"/> 及 属性的绑定是正确的。不要在XAML中设置默认值,而是将其分配给视图模型中的绑定EmailConfirmatio

目前我正在使用日期选择器:

<DatePicker Name="dpEmailConfirmed1" Grid.Row="1" Grid.Column="3" SelectedDate="{Binding EmailConfirmation}" Margin="5"/>

属性的绑定是正确的。不要在XAML中设置默认值,而是将其分配给视图模型中的绑定
EmailConfirmation
属性,例如在其构造函数中:

public class MyEmailViewModel : INotifyPropertyChanged
{
   public MyEmailViewModel()
   {
      EmailConfirmation = DateTime.Today;
   }

   private DateTime _emailConfirmation;
   public DateTime EmailConfirmation
   {
      get => _emailConfirmation;
      set
      {
         if (_emailConfirmation.Equals(value))
            return;

         _emailConfirmation = value;
         OnPropertyChanged();
      }
   }

   public event PropertyChangedEventHandler PropertyChanged;

   protected virtual void OnPropertyChanged(string propertyName = null)
   {
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
   }

   // ...other view model code.
}
由于要应用今天的日期,因此可以使用而不是重置实例的时间组件


也不要忘记实现,例如,如上面的示例中所示,否则对属性的更改不会反映在用户界面中。

如果
EmailConfirmation
DateTime
实例,则绑定是正常的。到底是什么不起作用?如果绑定到
EmailConfirmation
属性,则将其设置为视图模型中的当前日期。@thatguy:是,EmailConfirmation是一个日期时间实例。目前,它将启动后的日期设置为01.01.0001。这是
DateTime
struct的默认值。只需将此
EmailConfirmation
属性设置为构造/初始化时所需的日期,例如
DateTime。现在
@thatguy:谢谢,这个功能非常有效。
dpEmailSent1.Text = DateTime.Now.Date.ToString();
dpEmailSent1.DisplayDate = DateTime.Now.Date.ToString();
public class MyEmailViewModel : INotifyPropertyChanged
{
   public MyEmailViewModel()
   {
      EmailConfirmation = DateTime.Today;
   }

   private DateTime _emailConfirmation;
   public DateTime EmailConfirmation
   {
      get => _emailConfirmation;
      set
      {
         if (_emailConfirmation.Equals(value))
            return;

         _emailConfirmation = value;
         OnPropertyChanged();
      }
   }

   public event PropertyChangedEventHandler PropertyChanged;

   protected virtual void OnPropertyChanged(string propertyName = null)
   {
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
   }

   // ...other view model code.
}