Windows phone 7 无极轴控制

Windows phone 7 无极轴控制,windows-phone-7,Windows Phone 7,我正在尝试为日历类型的应用程序使用Pivot控件,其中每个Pivot视图都显示一些关于当前日期的信息。当用户向前滑动时,将显示第二天。我通过将项目添加到PivotItem集合的末尾来实现这一点,效果很好 我的问题发生在用户试图返回前一天时。在这种情况下,将在Pivot项目集合的开头添加一个新项目。尽管添加工作正常,但显示的透视项始终是错误的(即,新添加的项)。在Pivot控件上设置SelectedItem没有帮助 我认为Pivot可能不是我任务的正确控件,因此非常感谢您提供有关使用哪个视图或如何

我正在尝试为日历类型的应用程序使用
Pivot
控件,其中每个
Pivot
视图都显示一些关于当前日期的信息。当用户向前滑动时,将显示第二天。我通过将项目添加到
Pivot
Item集合的末尾来实现这一点,效果很好

我的问题发生在用户试图返回前一天时。在这种情况下,将在
Pivot
项目集合的开头添加一个新项目。尽管添加工作正常,但显示的透视项始终是错误的(即,新添加的项)。在
Pivot
控件上设置
SelectedItem
没有帮助

我认为
Pivot
可能不是我任务的正确控件,因此非常感谢您提供有关使用哪个视图或如何使用
Pivot
解决上述问题的任何帮助

my Viewmodel的代码,该代码实现一天的前进/后退。
页面
绑定到透视
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));
                }
            }
        };
this.PropertyChanged+=(s,e)=>
{
如果(例如,PropertyName==“SelectedItem”)
{
var si=选择EdItem作为DayViewModel;
如果(si!=null)
{
var idx=Pages.IndexOf(SelectedItem);
int-nextix=(idx+1)%3;

intprevidx=((idx-1)为此,我将使用具有4个页面的Pivot控件

在任何时候,上一页、当前页和下一页都将包含正确的数据,并且始终有一个(空)页


然后,当当前页面正在更改或已更改时,您可以响应事件-使用这些事件将当前(空)页面设置为正确的新内容,然后清除新(空)页面。

透视控制指南指出,如果页面数超过6页,则应避免使用透视控制

使用它的无限页在毫无疑问


我建议您使用
TransitioningContentControl
并借助触摸手势进行前后翻转。
TransitioningContentControl
允许您在内容更改时使用动画。

谢谢,您的回答为我指明了正确的方向,我用我使用的代码编辑了我的问题对于您的回答,我知道我的解决方案是对Pivot的一种误用,但它似乎有效。