Событие PropertyChanged не запускаетсяC#

Место общения программистов C#
Anonymous
Событие PropertyChanged не запускается

Сообщение Anonymous »

Я реализую разбиение по страницам для DataGrid с помощью ObservableCollection.
В первый раз правильно отображается 10 записей. При нажатии кнопки «Далее» вторая страница не отображалась. Во время отладки я обнаружил, что событие PropertyChanged не срабатывает, когда я устанавливаю номер текущей страницы.

Мой код

Код: Выделить всё

   ObservableCollection riskCollection = new ObservableCollection();
private ObservableCollection Pages;
private ObservableCollection _ItemsSource;
private ObservableCollection _CurrentPage;
public RiskAlert()
{
InitializeComponent();
GeneratePages();
}
private void GeneratePages()
{
if (riskCollection.Count > 0)
{
PageCount = (int)Math.Ceiling(riskCollection.Count / (double)ItemsPerPage);
Pages = new ObservableCollection();
for (int i = 0; i < PageCount; i++)
{
ObservableCollection page = new ObservableCollection();
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 Collection
{
get
{
return riskCollection;
}
set
{
riskCollection = value;
GeneratePages();
}
}
public ObservableCollection 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. Мое имя DataGrid — 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  0)
txtDispRecs.Text = "Displaying 1 to " + CurrentPage.Count();
else
txtDispRecs.Text = "Displaying 0 to " + CurrentPage.Count();
}
Для этого подкачки я следовал одному примеру из Google.
Я не знаю, почему событие propertychanged не срабатывает.

Кто-нибудь может помочь с этим?

Рамки.

Подробнее здесь: https://stackoverflow.com/questions/861 ... not-firing

Вернуться в «C#»