2012-06-04 38 views
2

我會盡我所能來解釋我的問題:WPF「日曆單月」火DisplayDateChanged懸停

首先,我想了一個日曆,只顯示了一個月,我讓

<Calendar x:Name="_Calendar" DisplayMode="Year" DisplayModeChanged="_Calendar_DisplayModeChanged" DisplayDateChanged="_Calendar_DisplayDateChanged"/> 

然後當DisplayModeChanged是火我簡單做:

private void _Calendar_DisplayModeChanged(Object InSender, CalendarModeChangedEventArgs InE) 
     { 
      if (_Calendar.DisplayMode != CalendarMode.Year) 
      { 
       _Calendar.DisplayMode = CalendarMode.Year; 
      } 
     } 

其所有的好,直到我想刷新我的網格數據,當用戶更改選定月份,例如:

private void _Calendar_DisplayDateChanged(Object InSender, CalendarDateChangedEventArgs InE) 
     { 
       _RefreshGrid(); 
     } 

第一次(我的意思是在用戶與日曆交互之前),網格刷新正常,並且如果用戶將鼠標懸停在其他月份上,則什麼也沒有發生(我想這樣)。但是當用戶點擊另一個月後,網格會再次刷新,但是當用戶將鼠標懸停在其他月份時,網格會再次刷新,我希望網格僅在用戶在其他月份單擊時刷新。

所以DisplayDateChanged當用戶將鼠標懸停......

它的奇怪,因爲如果我把一個消息在_RefreshGrid(),然後懸停好好嘗試一下火DisplayDateChanged被激發。

希望你能理解,如果不是我可以試試更好解釋。

謝謝!

編輯:我認爲問題是焦點,錯誤不會發生在消息箱,因爲messagebox得到的焦點,當我點擊任何日期,然後如果我將鼠標懸停在其他日期DisplayDateChanged被解僱,但如果我點擊另一個地方首先沒有這個問題。

回答

3

這解決了我的問題:

private void _Calendar_PreviewMouseUp(object sender, MouseButtonEventArgs e) 
      { 
       if (Mouse.Captured is CalendarItem) 
       { 
        Mouse.Capture(null); 
       } 
      }