我试图使用日历类型应用程序的Pivot
控件,其中每个Pivot
视图显示有关当天的一些信息。当用户向前滑动时,显示第二天。我通过将项目添加到Pivot
项目集合的末尾来实现此目标,这很好。无尽的枢轴控制
当用户试图回到前一天时,会出现我的问题。在这种情况下,在Pivot
项目集合的开头添加一个新项目。虽然添加的作品,显示的枢轴项目总是错误的(即新添加的项目)。在Pivot
控件上设置SelectedItem
没有帮助。
我认为Pivot
可能不是我的任务的正确控制,所以任何有关如何使用视图或如何解决我提到的问题与Pivot
的帮助是高度赞赏。
我的Viewmodel的代码实现向前/向后一天。 Pages
绑定到枢轴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));
}
}
};
谢谢你,你的回答指出我正确的方向,我用我使用的代码编辑我的问题 – thumbmunkeys 2011-02-28 20:53:27