gpt4 book ai didi

c# - DateTimePicker 日历默认为上次选择的月份/年份

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:19 27 4
gpt4 key购买 nike

日期时间是什么时候?我的 DateTimePicker 控件的源更改为 null,我想选择另一个日期,日历下拉列表默认为最后选择的月份和年份。

我正在为 DOB 使用 DateTimePicker,因此月份和年份会有很大差异,我宁愿在数据源更改为 null 时将日历重置为当前月份和年份。 WPFToolkit 中的 DateTimePicker 可以执行此操作,但我不想要微调器或它附带的时间选择,也找不到隐藏它们的方法。

我正在使用 MVVM 设计模式并希望避免立即代码隐藏。

来自 View 的 XAML:

<DatePicker Height="25" HorizontalAlignment="Left" Margin="53,47,0,0" 
Name="dpEventDate" VerticalAlignment="Top" Width="115"
SelectedDate="{Binding EventItem.BirthDate, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />

来自 View 模型的 C#:(事件是我在模型中创建的类)

private Event _eventItem;

public event PropertyChangedEventHandler PropertyChanged;
public RelayCommand CreateCommand { get; private set; }

public Event EventItem
{
get { return _eventItem; }
set { _eventItem = value; OnPropertyChanged("EventItem"); }
}

public MainViewModel()
{
EventItem = new Event();
CreateCommand = new RelayCommand(CreateEvent);
}

protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;

if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}

如果我可以提供更多详细信息来帮助您帮助我,请告诉我。

最佳答案

根据 Adam 的建议,下面是 View 模型中帮助我重置 DateTimePicker 的日历显示的代码:

private Event _eventItem;
private DateTime? _viewDate;

public event PropertyChangedEventHandler PropertyChanged;
public RelayCommand CreateCommand { get; private set; }

public Event EventItem
{
get { return _eventItem; }
set { _eventItem = value; OnPropertyChanged("EventItem"); }
}

// Decoy DateTime property
public DateTime? ViewDate
{
get { return _viewDate; }
set
{
_viewDate = value;
EventItem.EventDate = _viewDate; // Update the source

OnPropertyChanged("ViewDate");
}
}

public MainViewModel()
{
EventItem = new Event();
CreateCommand = new RelayCommand(CreateEvent);
}

private void CreateEvent()
{
ViewDate = DateTime.Today; // Important for resetting the calendar display
// Save input and set EventItem to new event for a clean slate
}

protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;

if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}

// Important if you want your DatePicker control to be empty
if(name.Equals("ViewDate") && DateTime.Today.Equals(ViewDate))
{
ViewDate = null;
}
}

关于c# - DateTimePicker 日历默认为上次选择的月份/年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com