Ошибка исключения ListCollectionView "System.Reflection.TargetInvocationException" при навигации
Я связал всплывающее окно WPF с ListCollectionView. У меня есть две кнопки "следующий / предыдущий", поэтому, когда пользователь щелкает, он может перейти в коллекцию. Но у меня есть проблема, когда пользователь нажимает следующий, когда он находится на последнем элементе (или предыдущий, когда он на первом элементе).
Я получаю "System.Reflection.TargetInvocationException". Кажется, что MoveCurrentToNext/Previous пытается перейти на пустой элемент. Я сделал тест с точкой останова, и с двумя элементами в моей коллекции я мог бы использовать MoveCurrentToNext, когда я нахожусь на последнем элементе. Есть ли решение не использовать этот метод, когда он не нужен?
public class PopupViewModel : Screen
{
private readonly PopupManager manager = new PopupManager();
public ListCollectionView AlertCollectionView { get; set; }
public void PreviousRecordExecute()
{
this.AlertCollectionView.MoveCurrentToPrevious();
}
public void NextRecordExecute()
{
this.AlertCollectionView.MoveCurrentToNext();
}
private FeedItem CurrentAlert
{
get
{
return AlertCollectionView.CurrentItem as FeedItem;
}
set
{
AlertCollectionView.MoveCurrentTo(value);
NotifyOfPropertyChange();
}
}
[ImportingConstructor]
public PopupViewModel()
{
manager.GetPopData().CollectionChanged += (s, e) => AlertCollectionView.Refresh();
AlertCollectionView = new ListCollectionView(manager.GetPopData());
AlertCollectionView.MoveCurrentToPosition(0);
}
}
Вид (пример для кнопки "Далее")
<ItemsControl Margin="369,87,10,304">
<Button Height="19" Width="19" BorderThickness="0" Margin="1,0" BorderBrush="{x:Null}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="NextRecordExecute"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFC500"/>
<GradientStop Color="#FFF1E29E" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</ItemsControl>
Спасибо за любую помощь.