/// <summary>
        /// Перевыбор месяца при смене выбранного индекса
        /// </summary>
        void RefreshSelectedMonth(Period p)
        {
            if (p == Period.From)
            {
                if (FromMonthIndex >= 0)
                {
                    var fromMonthIndex = FromMonthIndex;
                    var newMonth       = FromMonthes.ElementAt(fromMonthIndex);

                    if (!newMonth.Equals(FromMonth))
                    {
                        FromMonth = newMonth;
                    }
                }
            }
            else if (p == Period.To)
            {
                if (ToMonthIndex >= 0)
                {
                    var toMonthIndex = ToMonthIndex;
                    var newMonth     = ToMonthes.ElementAt(toMonthIndex);

                    if (!newMonth.Equals(ToMonth))
                    {
                        ToMonth = newMonth;
                    }
                }
            }
        }
Example #2
0
        void ResetMonthesRange(bool from)
        {
            if (from) //для начального месяца
            {
                if (!App.AvailableMonthes.ContainsKey(ToYear))
                {
                    return;
                }
                //получаем список всех доступных месяцев на выбранный год
                var monthes = App.AvailableMonthes[ToYear];

                //если выбран один год, то исключаем те месяцы, что находятся за выбранным начальным
                ToMonthes = FromYear == ToYear?monthes.Where(m => m >= FromMonth) : monthes;

                if (ToMonthIndex >= 0)
                {
                    //пересчитываем индекс для выбранного месяца, т.к. изменили коллекцию
                    ToMonthIndex = ToMonthes.IndexOf(ToMonth);
                }
            }
            else //для конечного месяца
            {
                if (!App.AvailableMonthes.ContainsKey(FromYear))
                {
                    return;
                }

                //получаем список всех доступных месяцев на выбранный год
                var monthes = App.AvailableMonthes[FromYear];

                //если выбран один год, то исключаем те месяцы, что находятся за выбранным начальным
                FromMonthes = FromYear == ToYear?monthes.Where(m => m <= ToMonth) : monthes;

                if (FromMonthIndex >= 0)
                {
                    //пересчитываем индекс для выбранного месяца, т.к. изменили коллекцию
                    FromMonthIndex = FromMonthes.IndexOf(FromMonth);
                }
            }
        }
        /// <summary>
        /// Перевыбор индекса у месяца при смене года (в новом году каких-то месяцев в БД может не быть, следовательно коллекция и индексы изменятся)
        /// </summary>
        void RefreshSelectedIndex(Period p)
        {
            if (FromMonth == null || ToMonth == null) //если месяц не проставлен по каким-то причинам
            {
                if (FromMonthIndex >= 0)
                {
                    FromMonthIndex = -1; //ставим отрицательное значение
                }
            }
            else
            {
                //проверка, что индекс не равен текущему
                //(предотвращение рекурсии, т.к. при изменении индекса вызывается соответствующее изменение месяца)
                //и простановка индекса ткеущего выбранного месяца
                if (p == Period.From)
                {
                    var fromMonthIndex = FromMonth.Index;
                    var newIndex       = FromMonthes.IndexOf(FromMonth, (m) => m.Index == fromMonthIndex);

                    if (newIndex != FromMonthIndex)
                    {
                        FromMonthIndex = newIndex;
                    }
                }
                else if (p == Period.To)
                {
                    var toMonthIndex = ToMonth.Index;
                    var newIndex     = ToMonthes.IndexOf(ToMonth, (m) => m.Index == toMonthIndex);

                    if (newIndex != ToMonthIndex)
                    {
                        ToMonthIndex = newIndex;
                    }
                }
            }
        }