private void SetTheme() { if (IsDark) { CurrentThemeThemeNoiseColor = Theme.WhiteTheme.ThemeColor; CurrentThemeThemeNoiseOpacity = Theme.WhiteTheme.ThemeBlurinessOpacity; CurrentThemeThemeNoiseRatioInt = Theme.WhiteTheme.ThemeBlurinessRatio; CurrentThemeHasEventDayBackColor = Theme.WhiteTheme.HasEventDayBackColor; CurrentThemeDayLeadForecolor = Theme.WhiteTheme.DayLeadColor; CurrentThemePersianDayForecolor = Theme.WhiteTheme.PersianDayColor; CurrentThemeGregHijrForecolor = Theme.WhiteTheme.GregorianHijriColor; CurrentThemeTodayForecolor = Theme.WhiteTheme.TodayForecolor; CurrentThemeSeparator = Theme.WhiteTheme.Separator; CurrentThemeChangeMonthForecolor = Theme.WhiteTheme.ChangeMonth; IsDark = false; } else { CurrentThemeThemeNoiseColor = Theme.DarkTheme.ThemeColor; CurrentThemeThemeNoiseOpacity = Theme.DarkTheme.ThemeBlurinessOpacity; CurrentThemeThemeNoiseRatioInt = Theme.DarkTheme.ThemeBlurinessRatio; CurrentThemeHasEventDayBackColor = Theme.DarkTheme.HasEventDayBackColor; CurrentThemeDayLeadForecolor = Theme.DarkTheme.DayLeadColor; CurrentThemePersianDayForecolor = Theme.DarkTheme.PersianDayColor; CurrentThemeGregHijrForecolor = Theme.DarkTheme.GregorianHijriColor; CurrentThemeTodayForecolor = Theme.DarkTheme.TodayForecolor; CurrentThemeSeparator = Theme.DarkTheme.Separator; CurrentThemeChangeMonthForecolor = Theme.DarkTheme.ChangeMonth; IsDark = true; } var animationDuration = TimeSpan.FromMilliseconds(300); ThemeNoise.CreateStoryBoard(CurrentThemeThemeNoiseColor, "(Border.Background).(SolidColorBrush.Color)"); PersianTitle.CreateStoryBoard(CurrentThemeDayLeadForecolor, "(TextBlock.Foreground).(SolidColorBrush.Color)"); GregorianTitle.CreateStoryBoard(CurrentThemeDayLeadForecolor, "(TextBlock.Foreground).(SolidColorBrush.Color)"); HijriTitle.CreateStoryBoard(CurrentThemeDayLeadForecolor, "(TextBlock.Foreground).(SolidColorBrush.Color)"); TodayDate.CreateStoryBoard(CurrentThemeTodayForecolor, "(Button.Foreground).(SolidColorBrush.Color)"); Separator.CreateStoryBoard(CurrentThemeSeparator, "Background.Color"); BtnPrevMonth.CreateStoryBoard(CurrentThemeChangeMonthForecolor, "(Button.Foreground).(SolidColorBrush.Color)"); BtnNextMonth.CreateStoryBoard(CurrentThemeChangeMonthForecolor, "(Button.Foreground).(SolidColorBrush.Color)"); DesignCalendar(NowDateTime); foreach (var day in CalendarDays.Children) { var dayDetails = ((day as Button)?.Content as Grid)?.Children; if (dayDetails == null) { continue; } foreach (var dayDetail in dayDetails) { switch (dayDetail) { case TextBlock persianDay: persianDay.CreateStoryBoard(CurrentThemePersianDayForecolor, "(TextBlock.Foreground).(SolidColorBrush.Color)"); break; case Grid customDays: foreach (var cusDay in customDays.Children) { if (cusDay is TextBlock customDay) { customDay.CreateStoryBoard(CurrentThemeGregHijrForecolor, "(TextBlock.Foreground).(SolidColorBrush.Color)"); } } break; } } } ThemeNoise.BeginAnimation(OpacityProperty, new DoubleAnimation(ThemeNoise.Opacity, CurrentThemeThemeNoiseOpacity, animationDuration)); ThemeNoiseRatio.Ratio = CurrentThemeThemeNoiseRatioInt; DesignCalendar(NowDateTime); }