private void InitDayPanel(int year, int month)
        {
            var count = GrdDay.Children.Count;

            var group = Guid.NewGuid().ToString();

            for (int i = 0; i < 42 - count; i++)
            {
                var border = new Border();
                Grid.SetRow(border, (int)(i / 7));
                Grid.SetColumn(border, i % 7);

                var radioButton = new RadioButton()
                {
                    GroupName = group,
                    Padding   = new Thickness(0),
                    VerticalContentAlignment   = VerticalAlignment.Center,
                    HorizontalContentAlignment = HorizontalAlignment.Center,
                };
                RadioButtonHelper.SetRadioButtonStyle(radioButton, RadioButtonStyle.Button);
                RadioButtonHelper.SetCornerRadius(radioButton, new CornerRadius(0));
                radioButton.Click += RdbDay_Click;

                SetBinding("Foreground", radioButton, ForegroundProperty);
                SetBinding("FontSize", radioButton, FontSizeProperty);
                SetBinding("ThemeBrush", radioButton, RadioButtonHelper.CheckedBackgroundProperty);
                border.Child = radioButton;
                GrdDay.Children.Add(border);
            }

            var currentMonthFirstDay = new DateTime(year, month, 1);
            var date = currentMonthFirstDay.AddDays((int)currentMonthFirstDay.DayOfWeek * -1 + (IsSundayFirst ? 0 : 1));

            for (int i = 0; i < 42; i++)
            {
                var currentDate = date.AddDays(i);
                var radioButton = (GrdDay.Children[i] as Border).Child as RadioButton;

                var isUnlimit = CheckDateLimit(currentDate, DayMonthYear.Day);

                radioButton.IsChecked = isUnlimit ? SelectedDate.Date == currentDate.Date : false;
                radioButton.Opacity   = isUnlimit ? (currentDate.Month == month ? 1 : 0.5) : 0.2;
                radioButton.IsEnabled = isUnlimit;
                radioButton.Content   = currentDate.Day;
                radioButton.Tag       = currentDate;
            }
        }
        private void InitMonthPanel(int year)
        {
            var count = GrdMonth.Children.Count;
            var group = Guid.NewGuid().ToString();

            for (int i = 0; i < 12 - count; i++)
            {
                var border = new Border();
                Grid.SetRow(border, (int)(i / 4));
                Grid.SetColumn(border, i % 4);

                var radioButton = new RadioButton()
                {
                    GroupName = group,
                    Padding   = new Thickness(0),
                    VerticalContentAlignment   = VerticalAlignment.Center,
                    HorizontalContentAlignment = HorizontalAlignment.Center,
                };
                RadioButtonHelper.SetRadioButtonStyle(radioButton, RadioButtonStyle.Button);
                RadioButtonHelper.SetCornerRadius(radioButton, new CornerRadius(0));
                radioButton.Click += RdbMonth_Click;

                SetBinding("Foreground", radioButton, ForegroundProperty);
                SetBinding("FontSize", radioButton, FontSizeProperty);
                SetBinding("ThemeBrush", radioButton, RadioButtonHelper.CheckedBackgroundProperty);
                border.Child = radioButton;
                GrdMonth.Children.Add(border);
            }

            var currentMonthFirstDay = new DateTime(year, 1, 1);

            for (int i = 0; i < 12; i++)
            {
                var currentDate = currentMonthFirstDay.AddMonths(i);

                var radioButton = (GrdMonth.Children[i] as Border).Child as RadioButton;

                var isUnlimit = CheckDateLimit(currentDate, DayMonthYear.Month);

                radioButton.IsChecked = isUnlimit ? (SelectedDate.Year == currentDate.Year && SelectedDate.Month == currentDate.Month) : false;
                radioButton.Opacity   = isUnlimit ? 1 : 0.2;
                radioButton.IsEnabled = isUnlimit;
                radioButton.Content   = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(i + 1);
                radioButton.Tag       = currentDate;
            }
        }
        private void InitYearPanel(int year)
        {
            var count = GrdYear.Children.Count;
            var group = Guid.NewGuid().ToString();

            for (int i = 0; i < 15 - count; i++)
            {
                var border = new Border();
                Grid.SetRow(border, (int)(i / 3));
                Grid.SetColumn(border, i % 3);

                var radioButton = new RadioButton()
                {
                    GroupName = group,
                    Padding   = new Thickness(0),
                    VerticalContentAlignment   = VerticalAlignment.Center,
                    HorizontalContentAlignment = HorizontalAlignment.Center,
                };
                RadioButtonHelper.SetRadioButtonStyle(radioButton, RadioButtonStyle.Button);
                RadioButtonHelper.SetCornerRadius(radioButton, new CornerRadius(0));
                radioButton.Click += RdbYear_Click;

                SetBinding("Foreground", radioButton, ForegroundProperty);
                SetBinding("FontSize", radioButton, FontSizeProperty);
                SetBinding("ThemeBrush", radioButton, RadioButtonHelper.CheckedBackgroundProperty);
                border.Child = radioButton;
                GrdYear.Children.Add(border);
            }

            var firstYear = new DateTime(year, 1, 1).AddYears(-7);

            for (int i = 0; i < 15; i++)
            {
                var currentDate = firstYear.AddYears(i);
                var radioButton = (GrdYear.Children[i] as Border).Child as RadioButton;
                var isUnlimit   = CheckDateLimit(currentDate, DayMonthYear.Year);
                radioButton.IsChecked = isUnlimit ? (SelectedDate.Year == currentDate.Year) : false;
                radioButton.Opacity   = isUnlimit ? 1 : 0.2;
                radioButton.IsEnabled = isUnlimit;
                radioButton.Content   = currentDate.Year;
                radioButton.Tag       = currentDate;
            }
        }
        private void InitMonthPanel(int year)
        {
            var count = GrdMonth.Children.Count;

            for (int i = 0; i < 12 - count; i++)
            {
                var border = new Border();
                Grid.SetRow(border, (int)(i / 4));
                Grid.SetColumn(border, i % 4);

                var radioButton = new RadioButton()
                {
                    GroupName = "CALENDAR_MONTH",
                    MaxHeight = 35,
                };
                RadioButtonHelper.SetRadioButtonStyle(radioButton, RadioButtonStyle.Button);
                RadioButtonHelper.SetCornerRadius(radioButton, 0);
                radioButton.Click += RdbMonth_Click;

                SetBinding("Foreground", radioButton, ForegroundProperty);
                SetBinding("FontSize", radioButton, FontSizeProperty);
                SetBinding("ThemeBrush", radioButton, RadioButtonHelper.CheckedBackgroundProperty);
                border.Child = radioButton;
                GrdMonth.Children.Add(border);
            }

            var currentMonthFirstDay = new DateTime(year, 1, 1);

            for (int i = 0; i < 12; i++)
            {
                var currentDate = currentMonthFirstDay.AddMonths(i);

                var radioButton = (GrdMonth.Children[i] as Border).Child as RadioButton;

                var isUnlimit = CheckDateLimit(currentDate, DayMonthYear.Month);

                radioButton.IsChecked = isUnlimit ? (SelectedDate.Year == currentDate.Year && SelectedDate.Month == currentDate.Month) : false;
                radioButton.Opacity   = isUnlimit ? 1 : 0.2;
                radioButton.IsEnabled = isUnlimit;
                radioButton.Content   = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(i + 1);
                radioButton.Tag       = currentDate;
            }
        }
        private void InitHourPanel()
        {
            var count = StkHour.Children.Count;

            for (int i = 0; i < 24 - count; i++)
            {
                var border = new Border()
                {
                    Height = 35
                };

                Grid.SetRow(border, (int)(i / 7));
                Grid.SetColumn(border, i % 7);

                var radioButton = new RadioButton()
                {
                    GroupName = "CLOCK_HOUR",
                };
                RadioButtonHelper.SetRadioButtonStyle(radioButton, RadioButtonStyle.Button);
                RadioButtonHelper.SetCornerRadius(radioButton, 0);
                radioButton.Click += RdbHour_Click;

                SetBinding("Foreground", radioButton, ForegroundProperty);
                SetBinding("FontSize", radioButton, FontSizeProperty);
                SetBinding("ThemeBrush", radioButton, RadioButtonHelper.CheckedBackgroundProperty);
                border.Child = radioButton;
                StkHour.Children.Add(border);
            }

            for (int i = 0; i < 24; i++)
            {
                var radioButton = (StkHour.Children[i] as Border).Child as RadioButton;

                radioButton.IsChecked = SelectedTime.Hour == i;
                radioButton.Content   = i.ToString("00");
                radioButton.Tag       = i;
            }

            ScrollHour.ScrollToVerticalOffset((SelectedTime.Hour - 3) * 35);
        }
        private void InitYearPanel(int year)
        {
            var count = GrdYear.Children.Count;

            for (int i = 0; i < 15 - count; i++)
            {
                var border = new Border();
                Grid.SetRow(border, (int)(i / 3));
                Grid.SetColumn(border, i % 3);

                var radioButton = new RadioButton()
                {
                    GroupName = "CALENDAR_YEAR",
                    MaxHeight = 35,
                };
                RadioButtonHelper.SetRadioButtonStyle(radioButton, RadioButtonStyle.Button);
                RadioButtonHelper.SetCornerRadius(radioButton, 0);
                radioButton.Click += RdbYear_Click;

                SetBinding("Foreground", radioButton, ForegroundProperty);
                SetBinding("FontSize", radioButton, FontSizeProperty);
                SetBinding("ThemeBrush", radioButton, RadioButtonHelper.CheckedBackgroundProperty);
                border.Child = radioButton;
                GrdYear.Children.Add(border);
            }

            var firstYear = new DateTime(year, 1, 1).AddYears(-7);

            for (int i = 0; i < 15; i++)
            {
                var currentDate = firstYear.AddYears(i);
                var radioButton = (GrdYear.Children[i] as Border).Child as RadioButton;
                var isUnlimit   = CheckDateLimit(currentDate, DayMonthYear.Year);
                radioButton.IsChecked = isUnlimit ? (SelectedDate.Year == currentDate.Year) : false;
                radioButton.Opacity   = isUnlimit ? 1 : 0.2;
                radioButton.IsEnabled = isUnlimit;
                radioButton.Content   = currentDate.Year;
                radioButton.Tag       = currentDate;
            }
        }
        private void InitDialHour()
        {
            var count = CvaDial.Children.Count;

            for (int i = 0; i < 24 - count; i++)
            {
                var border = new Border()
                {
                    Height = 30, Width = 30
                };
                var point = GetPointOnEllipse(360.0 * i / 24);
                Canvas.SetLeft(border, point.X - 15);
                Canvas.SetTop(border, point.Y - 15);


                var radioButton = new RadioButton()
                {
                    GroupName = "CLOCK_HOUR",
                };
                RadioButtonHelper.SetRadioButtonStyle(radioButton, RadioButtonStyle.Button);
                RadioButtonHelper.SetCornerRadius(radioButton, 15);
                radioButton.Click += RdbHour_Click;

                SetBinding("Foreground", radioButton, ForegroundProperty);
                SetBinding("FontSize", radioButton, FontSizeProperty);
                SetBinding("ThemeBrush", radioButton, RadioButtonHelper.CheckedBackgroundProperty);
                border.Child = radioButton;
                CvaDial.Children.Add(border);
            }

            for (int i = 0; i < 24; i++)
            {
                var radioButton = (CvaDial.Children[i] as Border).Child as RadioButton;

                radioButton.IsChecked = SelectedTime.Hour == i;
                radioButton.Content   = i.ToString("00");
                radioButton.Tag       = i;
            }
        }