Bir takvim türü uygulaması için Pivot
denetimini kullanmaya çalışıyorum; burada her Pivot
görünümü geçerli güne ilişkin bazı bilgiler gösterir. Kullanıcı ileri doğru hareket ettiğinde, ertesi gün gösterilir. Bunu, iyi çalışan Pivot
Öğe koleksiyonunun sonuna öğeler ekleyerek uyguladım.Sonsuz Pivot Kontrolü
Sorun, kullanıcı bir önceki güne geri gitmeye çalıştığında oluşur. Bu durumda, Pivot
öğe koleksiyonunun başında yeni bir öğe eklenir. Ekleme çalışmaları olsa da, gösterilen Pivot öğesi her zaman yanlış olanıdır (yani yeni eklenen öğe). Pivot
kontrolünde SelectedItem
ayarının yapılması yardımcı olmaz.
Pivot
benim görev için doğru kumanda olmayabilir düşünüyorum, peki görünümü hakkında herhangi bir yardım kullanabilir veya
Pivot
son derece takdir edilmektedir benim yukarıda belirtilen sorunu çözmek nasıl. Bir gün ileri/geri gitmeyi uygulayan Viewmodel için
kodu. Pages
Pivot ItemSource
'a bağlanır.
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)));
}
}
}
};
}
}
DÜZENLEME: benim sorun çözüldü Değişikliği: Bunun için
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));
}
}
};
teşekkürler, cevabınız beni doğru yöne doğru yönlendirdi, sorduğum kodu kullandım koduyla – thumbmunkeys