我正在使用ObservableCollection<>
爲DataGrid實現分頁。 第一次正確顯示10條記錄。當點擊Next
按鈕時,它沒有顯示第二頁。當我調試時,我發現當我設置currentpagenumber時,PropertyChanged
事件不會觸發。PropertyChanged事件沒有觸發
我的代碼是
ObservableCollection<RiskSettings> riskCollection = new ObservableCollection<RiskSettings>();
private ObservableCollection<ObservableCollection<RiskSettings>> Pages;
private ObservableCollection<RiskSettings> _ItemsSource;
private ObservableCollection<RiskSettings> _CurrentPage;
public RiskAlert()
{
InitializeComponent();
GeneratePages();
}
private void GeneratePages()
{
if (riskCollection.Count > 0)
{
PageCount = (int)Math.Ceiling(riskCollection.Count/(double)ItemsPerPage);
Pages = new ObservableCollection<ObservableCollection<RiskSettings>>();
for (int i = 0; i < PageCount; i++)
{
ObservableCollection<RiskSettings> page = new ObservableCollection<RiskSettings>();
for (int j = 0; j < ItemsPerPage; j++)
{
if (i * ItemsPerPage + j > riskCollection.Count - 1) break;
page.Add(riskCollection[i * ItemsPerPage + j]);
}
Pages.Add(page);
}
this.CurrentPage = Pages[0];
this.CurrentPageNumber = 1;
}
}
public int CurrentPageNumber
{
get { return _CurrentPageNumber; }
set
{
_CurrentPageNumber = value;
//if (PropertyChanged != null)
this.OnPropertyChanged(new PropertyChangedEventArgs("CurrentPageNumber"));
}
}
public ObservableCollection<RiskSettings> Collection
{
get
{
return riskCollection;
}
set
{
riskCollection = value;
GeneratePages();
}
}
public ObservableCollection<RiskSettings> CurrentPage
{
get { return _CurrentPage; }
set
{
_CurrentPage = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("CurrentPage"));
}
}
public int CurrentPageNumber
{
get { return _CurrentPageNumber; }
set
{
_CurrentPageNumber = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("CurrentPageNumber"));
}
}
public int ItemsPerPage
{
get { return (int)GetValue(ItemsPerPageProperty); }
set { SetValue(ItemsPerPageProperty, value); }
}
public static readonly DependencyProperty ItemsPerPageProperty = DependencyProperty.Register("ItemsPerPage", typeof(int), typeof(RiskAlert), new UIPropertyMetadata(20));
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
我收集的所有數據在數據網格riskCollection.My Name是grdRiskAlerts 我綁定的
GeneratePages();
this.ItemsSource = riskCollection;
grdRiskAlerts.ItemsSource = CurrentPage;
txtTotalRecs.Text = "Total : " + riskCollection.Count();
//txtDispRecs.Text = CurrentPage.Count().ToString();
txtNumOfPages.Text = this.CurrentPageNumber.ToString();
totalRecords = riskCollection.Count();
if (pageSize <= totalRecords)
{
if (totalRecords > 0)
txtDispRecs.Text = "Displaying 1 to " + CurrentPage.Count();
else
txtDispRecs.Text = "Displaying 0 to " + CurrentPage.Count();
}
對於這個頁面的東西我也跟着從谷歌 我做的一個例子不知道爲什麼propertychanged事件沒有解僱。
任何人都可以幫忙嗎?
Ramki。
該粘貼不包含任何XAML,因此我們看不到您的綁定。您應該在您的問題中插入**相關的**代碼位,以便人們可以立即查看它們而無需轉到其他網站。 – slugster 2011-12-23 05:17:20
我是這個論壇的新手。我在我的鏈接中刪除了不需要的代碼[http://pastebin.com/twLjQ28Q] – user768853 2011-12-23 05:33:06
第二個粘貼爲空。你不會讓人們很容易幫助你...使用你問題下的編輯按鈕將代碼直接包含到你的問題中。 – slugster 2011-12-23 05:44:56