2011-02-15 155 views
4

由于某种原因,此事件触发两次。举例来说,按钮点击的其他事件只会触发一次,但日期选择器上的日期会因为连续两次触发事件而发生变化。WPF用户控件事件触发两次

任何想法?

代码

public event EventHandler<CalendarEventArgs> DateTimeStartChanged; 
private void dateTimeStart_SelectedDateChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (!_loading) 
    { 
     e.Handled = true; 

     if (DateTimeStartChanged != null) 
      if (dateTimeStart.SelectedDate != null && dateTimeEnd.SelectedDate != null) 
      { 
       StartDate = (DateTime) dateTimeStart.SelectedDate; 
       DateTimeStartChanged(this, 
             new CalendarEventArgs((DateTime) dateTimeStart.SelectedDate, 
                   (DateTime) dateTimeEnd.SelectedDate)); 
      } 



    } 
} 
+0

尝试在“if(!_loading)”之前尝试使用“e.Handled = true” – Artru 2011-08-24 15:02:14

回答

0

这与DatePicker控件中的错误,而不是你的问题。不幸的是,除了应用一种变通方法,比如设置一个标志,所以它只能在第一次执行时,你就无能为力了。

1

多么令人沮丧的问题。我对这个问题的解决方法如下。到目前为止工作。希望这可以帮助某人。

private DateTime? currentDateTime = null; 

private void dpDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if(currentDateTime != dpDate.SelectedDate) 
     SaveData(); 
    currentDateTime = dpDate.SelectedDate; 
}