导航时ListCollectionView异常错误“System.Reflection.TargetInvocationException”

时间:2015-07-01 09:30:31

标签: c# wpf listcollectionview targetinvocationexception

我已经使用ListCollectionView绑定了一个WPF弹出视图。我有两个按钮next / previous,所以当用户点击时,他可以导航到该集合。但是当用户点击最后一个元素时(或者当他在第一个元素上时)点击下一个时,我就会遇到问题。

我得到'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 个答案:

没有答案