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

前端之家收集整理的这篇文章主要介绍了windows-phone-7 – 无尽的枢轴控制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将Pivot控件用于日历类型的应用程序,其中每个Pivot视图显示有关当天的一些信息.当用户向前滑动时,显示第二天.我通过在Pivot Item集合的末尾添加项目来实现这一点,这很好.

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

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

我的viewmodel的代码,它实现了前进/后退一天.
Pages绑定到Pivot ItemSource.

  1. public class TrackDayviewmodel : HubviewmodelBase
  2. {
  3. private DateTime _CurrentDay;
  4. public DateTime CurrentDay
  5. {
  6. get { return _CurrentDay; }
  7. set
  8. {
  9. if (value.CompareTo (_CurrentDay) != 0)
  10. {
  11. _CurrentDay = value;
  12. OnPropertyChanged("CurrentDay");
  13. }
  14. }
  15. }
  16.  
  17. public TrackDayviewmodel ()
  18. {
  19. var day = DateTime.Now;
  20.  
  21. CurrentDay = day.Midnight();
  22.  
  23. Pages.Add(new Dayviewmodel(CurrentDay.AddDays(-1)));
  24. Pages.Add(new Dayviewmodel(CurrentDay));
  25. Pages.Add(new Dayviewmodel(CurrentDay.AddDays(1)));
  26.  
  27. SelectedItem = Pages[1];
  28.  
  29. this.PropertyChanged += (s,e) =>
  30. {
  31. if (e.PropertyName == "SelectedItem")
  32. {
  33. var si = SelectedItem as Dayviewmodel;
  34.  
  35. if (si != null)
  36. {
  37. var idx = Pages.IndexOf(SelectedItem);
  38. if (idx==0)
  39. {
  40. Pages.Insert(0,new Dayviewmodel(si.Day.AddDays(-1)));
  41. SelectedItem = Pages[1];
  42. }
  43. else if (idx == (Pages.Count - 1))
  44. {
  45. Pages.Add(new Dayviewmodel(si.Day.AddDays(1)));
  46. }
  47. }
  48. }
  49. };
  50. }
  51. }

编辑:改变解决了我的问题:

  1. this.PropertyChanged += (s,e) =>
  2. {
  3. if (e.PropertyName == "SelectedItem")
  4. {
  5. var si = SelectedItem as Dayviewmodel;
  6.  
  7. if (si != null)
  8. {
  9. var idx = Pages.IndexOf(SelectedItem);
  10.  
  11. int nextIdx = (idx + 1) % 3;
  12. int prevIdx = ((idx - 1)<0) ? 2 : (idx-1);
  13.  
  14. Pages[nextIdx] = new Dayviewmodel(si.Day.AddDays(1));
  15. Pages[prevIdx] = new Dayviewmodel(si.Day.AddDays(-1));
  16. }
  17. }
  18. };
为此,我将使用4页的Pivot控件.

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

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

猜你在找的Windows相关文章