windows-phone-7 - 无尽的枢轴控制

标签 windows-phone-7

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

当用户尝试回到前一天时,就会出现我的问题。在这种情况下,Pivot 的开头添加了一个新项目。项目集合。尽管添加有效,但显示的 Pivot 项目始终是错误的(即新添加的项目)。设置SelectedItemPivot控制没有帮助。

我认为 Pivot可能不是我的任务的正确控制,所以任何关于使用什么 View 或如何解决我前面提到的 Pivot 问题的帮助高度赞赏。

我的 Viewmodel 的代码,它实现了一天向前/向后。Pages绑定(bind)到枢轴 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));
                }
            }
        };

最佳答案

为此,我将使用 4 页的 Pivot 控件。

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

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

关于windows-phone-7 - 无尽的枢轴控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5146960/

相关文章:

windows-phone-7 - WP7 系统托盘文本

c# - 确定是否设置了 "24-hour clock"设置

c# - 在c#中声明一个全局变量

c# - 在 Windows Phone 7 (WP7) 中以编程方式创建按钮

windows-phone-7 - 如何从 Intranet 中分发 Windows Phone 7 应用程序

c# - 以编程方式使用 LowProfileImageLoader

c# - System.Windows.pdb 未加载 - Windows Phone

c# - 在 Windows Phone 7 上通话失败,但在 Windows 和 Xbox 360 上可以正常工作

c# - C# 中的 "Setting"类

C# URL 查询字符串问题