Я почти реализовал все функции, кроме отображения индекса.
Я передаю listviewitem в конвертер как мультипривязку для отображения индекса.
/>
Но listview отображает индекс до 2-й страницы, но на 3-й странице генерирует исключение, поскольку переданный элемент listviewitem отключен.
Когда я использую одинарную привязку (без startpos), это работает хорошо. он генерируется только при мультипривязке.
Снимок экрана с ошибкой: значения[1] отключены.item:

Это часть файла usercontrol.xaml.cs:
Код: Выделить всё
public static readonly DependencyProperty DisplayListProperty
= DependencyProperty.Register("DisplayList", typeof(List), typeof(PagingGrid));
public List? DisplayList
{
get => (List)this.GetValue(DisplayListProperty);
set
{
SetValue(DisplayListProperty, value);
}
}
Код: Выделить всё
Код: Выделить всё
public class IndexConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
ListViewItem item = (ListViewItem)values[0];
ListView listView = (ListView)ItemsControl.ItemsControlFromItemContainer(item);
int startPos = (int)values[1];
int index = listView.ItemContainerGenerator.IndexFromContainer(item) + 1 + startPos;
return index.ToString();
//return (((List)values[2]).FindIndex(a => a.RetweetId == ((Retweet)values[0]).RetweetId) + (int)values[1]).ToString();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

Подробнее здесь: https://stackoverflow.com/questions/706 ... rce-change