我有一些代码具有意外行为,具体取决于您使用 DatePicker 控件的方式。如果您通过鼠标选择日期来使用 DatePicker,则会触发一次事件并且代码可以正常工作。但是,如果您输入日期,则事件会触发两次。这是我的 xaml 代码。
<DatePicker Margin="0,-1,0,0" Height="23" VerticalAlignment="Top" HorizontalAlignment="Right" Width="190" SelectedDate="{Binding DaDate}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedDateChanged">
<i:InvokeCommandAction Command="{Binding SelectedDaDateChangedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</DatePicker>
和 c# 位。
public ICommand SelectedDaDateChangedCommand { get; set; }
private DateTime? daDate;
public DateTime? DaDate
{
get { return daDate; }
set
{
daDate = value;
NotifyOfPropertyChange(() => DaDate);
}
}
public MisoConstraintsViewModel(IView v) : base(v)
{
//This is where DoStuff() gets called twice from the SelectedDateChanged
SelectedDaDateChangedCommand = new RelayCommand(p => DoStuff());
}
任何帮助表示赞赏。谢谢。