Ошибка исключения 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>

Спасибо за любую помощь.

0 ответов

Другие вопросы по тегам