Calendar.xaml.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.ComponentModel;
  3. using System.Globalization;
  4. using System.Linq;
  5. using System.Windows.Data;
  6. namespace CustomControls
  7. {
  8. [DesignTimeVisible(false)]
  9. public partial class Calendar : System.Windows.Controls.Calendar
  10. {
  11. public DateTime[] AnnualDates { get; set; }
  12. public DateTime[] MonthDates { get; set; }
  13. public DateTime[] Dates { get; set; }
  14. public Calendar()
  15. {
  16. InitializeComponent();
  17. DataContext = this;
  18. }
  19. }
  20. public class LookupDatesConverter : IMultiValueConverter
  21. {
  22. public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  23. {
  24. var date = (DateTime)values[0];
  25. var dates = values[1] as DateTime[];
  26. return dates?.Where(x => x.Year == date.Year && x.Month == date.Month && x.Day == date.Day).Any();
  27. }
  28. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => null;
  29. }
  30. public class LookupAnnualDatesConverter : IMultiValueConverter
  31. {
  32. public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  33. {
  34. var date = (DateTime)values[0];
  35. var dates = values[1] as DateTime[];
  36. return dates?.Where(x => x.Month == date.Month && x.Day == date.Day).Any();
  37. }
  38. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => null;
  39. }
  40. public class LookupMonthDatesConverter : IMultiValueConverter
  41. {
  42. public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  43. {
  44. var date = (DateTime)values[0];
  45. var dates = values[1] as DateTime[];
  46. return dates?.Where(x => x.Day == date.Day).Any();
  47. }
  48. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => null;
  49. }
  50. }