.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.
}