날짜 및 상태 값을 포함하는 클래스에 바인딩 된 확장 Calendar 컨트롤이 있습니다. 이 아이디어는 근본적으로 국경일, 주말 공휴일 및 개인적인 휴일을 구분합니다. CalendarDay의 요소에 채우기 색을 선택하기 위해 달력 컨트롤과 연결된 개체 목록과 비교하여 현재 날짜를 검사하는 Converter를 사용하여 색상을 다양하게 렌더링합니다. 이것은 모두 완벽하게 작동합니다.캘린더 컨트롤, 클릭시 하루 배경색 변경
문제는 사용자가 특정 모드로 하루를 클릭 할 때 해당 날짜를 휴일/휴일로 선택하거나 선택 취소 할 수 있다는 것입니다. PreviewMouseDown을 사용하여 선택한 데이터 컨텍스트 (datetime)로 개체를 선택하고 상태를 업데이트합니다. 이 잘 작동하지만 새로 고침 performa 일정 컨트롤을 가져올 수 없습니다.
캘린더가 내 사용자 정의 클래스에 바인딩되어 있지 않습니다. 정확하게 CalendarDay가 바인딩되는 방법이 확실하지 않지만 DateTime 값을 가리키는 데이터 컨텍스트 만있는 것으로 보입니다. 따라서 NotifyPropertyChanged가 종료되었습니다. 날짜를 클릭하고 월을 전환하면 날짜가 예상대로 강조 표시됩니다. 필요한 것은 캘린더에 다시 그리기를 지시하는 것입니다. 나는 repaints를 강요에 대한 예제를 샅샅이 살펴 봤는데, 아무것도 지금까지 일한 적이 없다.
다른 것들 중에서 UpdateLayout()을 시도했습니다. 마우스 이벤트 내에서 다시 렌더링하려고하기 때문에 이것이 문제가되는지는 알 수 없습니다. 변환기를 시작할 수 있도록 달력 컨트롤을 다시 그리는 방법에 대한 아이디어가 있습니까?
좋아, 나는 이것으로 약간의 진전을 이뤘다고 생각하지만 아직 100 %는 아니다. 이 추가 할 경우 : var test = VisualTreeHelper.GetChild (VisualTreeHelper.GetParent (e.OriginalSource DependencyObject), 1) Rectangle; test.Fill = new SolidColorBrush (Colors.Red); ... 하루를 클릭 할 때 mousedown 이벤트에 CalendarDay 내의 요소 채우기를 변경할 수 있습니다. 나는 이것이 컨버터가 설정을 오버라이드하는 레이아웃을 시작하기를 희망했다. 불행히도 그것은 템플릿 색상을 오버라이드 한 것 같습니다. (그 날은 매달 빨간색입니다.) –