using System; using System.ComponentModel; using System.Globalization; using System.Linq; using System.Windows.Data; namespace CustomControls { [DesignTimeVisible(false)] public partial class Calendar : System.Windows.Controls.Calendar { public DateTime[] AnnualDates { get; set; } public DateTime[] MonthDates { get; set; } public DateTime[] Dates { get; set; } public Calendar() { InitializeComponent(); DataContext = this; } } public class LookupDatesConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var date = (DateTime)values[0]; var dates = values[1] as DateTime[]; return dates?.Where(x => x.Year == date.Year && x.Month == date.Month && x.Day == date.Day).Any(); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => null; } public class LookupAnnualDatesConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var date = (DateTime)values[0]; var dates = values[1] as DateTime[]; return dates?.Where(x => x.Month == date.Month && x.Day == date.Day).Any(); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => null; } public class LookupMonthDatesConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var date = (DateTime)values[0]; var dates = values[1] as DateTime[]; return dates?.Where(x => x.Day == date.Day).Any(); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => null; } }