尝试通过绑定属性来更改Datepicker上的Date。 如果我设置为DateTime.Now值。然后它工作。但是如果我将datepicker字段留空并失去焦点,我想设置为之前选择的日期。
public DateTime? Date
{
get
{
return _previousChosenDateTime = Smilefjestilsyn.Dato;
}
set
{
if (value != null)
{
_previousChosenDateTime = value;
}
}
}
XAML代码。
<DatePicker Style="{StaticResource TabSkipableDatePicker}"
Margin="-8,8,0,0"
Background="Transparent"
BorderBrush="Transparent"
SelectedDate="{Binding Date, StringFormat=dd/MM/yyyy, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Grid.Row="6"
Grid.Column="2"/>
答案 0 :(得分:0)
1st:return _previousChosenDateTime = Smilefjestilsyn.Dato;总是返回Smilefjestilsyn.Dato所以你可能想要改变它。
毕竟,我相信你遇到的主要问题是&#34;显示&#34;当用户明确删除文本框中的所有内容和水印时,DatePicker的数据&#34;选择日期&#34;出现而不是渴望&#34; perivousdate&#34;。您可能需要绑定&#34; Text&#34; DatePicker的属性是为了正确
以下内容应该有效,但我想知道是否有更好的解决方案。它有点难看
public class MainViewModel : ViewModelBase
{
private readonly DateTime _somePreviousDate = DateTime.Today.AddDays(-2);
private DateTime? _startDateSelected;
public DateTime? StartDateSelected
{
get
{
return _startDateSelected.HasValue ? _startDateSelected : _somePreviousDate;
}
set
{
_startDateSelected = value.HasValue ? value : _somePreviousDate;
OnPropertyChanged("StartDateSelected");
OnPropertyChanged("StartDateSelectedString");
}
}
public string StartDateSelectedString
{
get { return StartDateSelected.ToString(); }
}
}
<DatePicker Height="25" HorizontalAlignment="Left" VerticalAlignment="Top" Width="115"
SelectedDate="{Binding StartDateSelected, Mode=TwoWay}"
Text="{Binding StartDateSelectedString}">
</DatePicker>