加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-13 20:34:54 所属栏目:Windows 来源:网络整理
导读:我正在尝试将Pivot控件用于日历类型的应用程序,其中每个Pivot视图显示有关当天的一些信息.当用户向前滑动时,显示第二天.我通过在Pivot Item集合的末尾添加项目来实现这一点,这很好. 当用户尝试返回前一天时,我的问题就出现了.在这种情况下,在Pivot项集合的开
我正在尝试将Pivot控件用于日历类型的应用程序,其中每个Pivot视图显示有关当天的一些信息.当用户向前滑动时,显示第二天.我通过在Pivot Item集合的末尾添加项目来实现这一点,这很好.

当用户尝试返回前一天时,我的问题就出现了.在这种情况下,在Pivot项集合的开头添加一个新项.虽然添加有效,但显示的Pivot项始终是错误的(即新添加的项).在Pivot控件上设置SelectedItem没有帮助.

我认为Pivot可能不是我的任务的正确控制,所以任何关于使用什么视图或如何修复我的上述Pivot问题的帮助都非常感谢.

我的Viewmodel的代码,它实现了前进/后退一天.
Pages绑定到Pivot 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控件.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读