Control de pivote sin fin

Estoy tratando de usar unaPivot control para una aplicación de tipo calendario, donde cadaPivot view muestra algunas informaciones sobre el día actual. Cuando el usuario desliza hacia adelante, se muestra el día siguiente. Implementé esto agregando elementos al final de laPivot Colección de artículos, que funciona bien.

Mi problema ocurre cuando el usuario intenta retroceder al día anterior. En este caso, se agrega un nuevo elemento al comienzo de laPivot colección de artículos. Aunque la suma funciona, el elemento Pivot que se muestra siempre es el incorrecto (es decir, el elemento recién agregado). AjusteSelectedItem sobre elPivot control no ayuda.

Yo creo quePivots posible que @ no sea el control adecuado para mi tarea, por lo que cualquier ayuda sobre qué vista usar o cómo solucionar mi problema mencionado conPivot son muy apreciados.

code para mi Viewmodel que implementa avanzar / retroceder un día. @Pages está vinculado al PivotItemSource.

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)));
                    }
                }
            }
        };
    }
}

EDIT: Cambio que resolvió mi problema:

        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));
                }
            }
        };

Respuestas a la pregunta(2)

Su respuesta a la pregunta