спасибо за ваш ответ, я знаю, что мое решение это своего рода злоупотребление Pivot, но, похоже, оно работает.

аюсь использоватьPivot управление приложением типа календаря, где каждыйPivot представление показывает некоторую информацию о текущем дне. Когда пользователь перемещается вперед, отображается следующий день. Я реализовал это, добавив элементы в конецPivot Коллекция предметов, которая отлично работает.

Моя проблема возникает, когда пользователь пытается вернуться к предыдущему дню. В этом случае новый элемент добавляется в началеPivot коллекция предметов. Хотя добавление работает, показанный элемент Pivot всегда неправильный (т. Е. Вновь добавленный элемент). настройкаSelectedItem наPivot контроль не помогает

думаюPivot не может быть правильным контролем для моей задачи, поэтому любая помощь о том, какой вид использовать или как решить мою вышеупомянутую проблему сPivot высоко ценятся

код для моей Viewmodel, который реализует движение вперед / назад один день.Pages связан с осьюItemSource.

public class TrackDayViewModel : HubViewModelBase
{
    private DateTime _CurrentDay;
    public DateTime CurrentDay
    {
        get { return _CurrentDay; }
        set
        {
            if (value.CompareTo (_CurrentDay) != 0)
            {
                _CurrentDay = value;
                OnPropertyChanged("CurrentDay");
            }
        }
    }

    public TrackDayViewModel ()
    {
        var day = DateTime.Now;

        CurrentDay = day.Midnight();

        Pages.Add(new DayViewModel(CurrentDay.AddDays(-1)));
        Pages.Add(new DayViewModel(CurrentDay));
        Pages.Add(new DayViewModel(CurrentDay.AddDays(1)));

        SelectedItem = Pages[1];

        this.PropertyChanged += (s, e) =>
        {
            if (e.PropertyName == "SelectedItem")
            {
                var si = SelectedItem as DayViewModel;

                if (si != null)
                {
                    var idx = Pages.IndexOf(SelectedItem);
                    if (idx==0)
                    {
                        Pages.Insert(0, new DayViewModel(si.Day.AddDays(-1)));
                        SelectedItem = Pages[1];
                    }
                    else if (idx == (Pages.Count - 1))
                    {
                        Pages.Add(new DayViewModel(si.Day.AddDays(1)));
                    }
                }
            }
        };
    }
}

РЕДАКТИРОВАТЬ: Изменить, что решило мою проблему:

        this.PropertyChanged += (s, e) =>
        {
            if (e.PropertyName == "SelectedItem")
            {
                var si = SelectedItem as DayViewModel;

                if (si != null)
                {
                    var idx = Pages.IndexOf(SelectedItem);

                    int nextIdx = (idx + 1) % 3;
                    int prevIdx = ((idx - 1)<0)  ? 2 : (idx-1);

                    Pages[nextIdx] = new DayViewModel(si.Day.AddDays(1));
                    Pages[prevIdx] = new DayViewModel(si.Day.AddDays(-1));
                }
            }
        };

Ответы на вопрос(2)

Ваш ответ на вопрос