2012-06-04 3 views
2

에 DisplayDateChanged :WPF "달력은 달"불이 나는 내 문제를 설명하기 위해 최선을 다할 것 호버

먼저 난 단지 월을 표시하는 달력을 원을, 나는 그것을

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

은 그런 때 만들 DisplayModeChanged 화재 I 간단이 작업을 수행 할 수 있습니다 :

내가 예를 들어, 사용자가 선택한 달 변경할 때 내 그리드에 데이터를 새로 고칠 때까지 모든 좋은
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(); 
     } 

처음으로 사용자가 캘린더와 상호 작용하기 전에는 그리드가 새로 고침되고 사용자가 다른 달 위에 마우스를 올려 놓으면 아무 것도 발생하지 않습니다. 그러나 사용자가 다른 달을 클릭하면 그리드가 다시 새로 고침됩니다. 사용자가 다른 달을 가리키면 그리드가 다시 새로 고쳐지기 때문에 사용자가 다른 달을 클릭 할 때만 그리드가 새로 고침됩니다. 사용자 가져가 ...

() 나는 _RefreshGrid에 메시지 박스를 넣어 때문에 경우에 그 이상한

다음 호버 넣은 사람은 아니다 불이 DisplayDateChanged 때

그래서 DisplayDateChanged가 시작됩니다.

당신이 이해할 수 있기를 바랍니다. 그렇지 않다면 더 잘 설명 할 수 있습니다.

감사합니다.

편집 : 나는 문제가 포커스가있는 것 같아요. MessageBox에 포커스가 있기 때문에 오류가 발생하지 않습니다. 날짜를 클릭하면 DisplayDateChanged가 시작되는 다른 날짜 위로 마우스를 가져 가면 클릭하지만 발생합니다. 다른 곳에서는 처음에는이 문제가 없습니다.

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

답변

3

내 문제를 해결
관련 문제