XAML-ListView双重抽头灾难性故障

XAML-ListView双重抽头灾难性故障,xaml,listview,winrt-xaml,itemsource,Xaml,Listview,Winrt Xaml,Itemsource,当使用双击事件时,当ListViews ItemSource-ObservableCollection加载较少的项时,我会遇到灾难性的失败。现在a写了一个非常简单的例子,我仍然得到同样的错误 这是一个Windows 8.1应用商店应用程序 简单示例:如果我在listview中有6个项目,我双击项目编号3。然后,ListView用4项重新绑定。这很好用 但如果我双击项目编号5或6,我会得到灾难性的失败 代码: <ListView x:Name="myListView" DoubleT

当使用双击事件时,当ListViews ItemSource-ObservableCollection加载较少的项时,我会遇到灾难性的失败。现在a写了一个非常简单的例子,我仍然得到同样的错误

这是一个Windows 8.1应用商店应用程序

简单示例:如果我在listview中有6个项目,我双击项目编号3。然后,ListView用4项重新绑定。这很好用

但如果我双击项目编号5或6,我会得到灾难性的失败

代码:

    <ListView x:Name="myListView" DoubleTapped="myListView_DoubleTapped" />

    public MainPage()
    {
        this.InitializeComponent();

        List<string> list1 = new List<string>();

        list1.Add("item1");
        list1.Add("item2");
        list1.Add("item3");
        list1.Add("item4");
        list1.Add("item5");
        list1.Add("item6");

        myListView.ItemsSource = list1;
    }

    private void myListView_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
    {
        List<string> list2 = new List<string>();

        list2.Add("OterhItem1");
        list2.Add("OterhItem2");
        list2.Add("OterhItem3");
        list2.Add("OterhItem4");

        myListView.ItemsSource = list2;
    }

公共主页()
{
this.InitializeComponent();
List list1=新列表();
清单1.添加(“项目1”);
清单1.添加(“项目2”);
清单1.添加(“第3项”);
清单1.添加(“第4项”);
清单1.添加(“第5项”);
清单1.添加(“第6项”);
myListView.ItemsSource=list1;
}
私有void myListView_双击(对象发送方,双击路由数据源)
{
List list2=新列表();
清单2.添加(“OterhItem1”);
清单2.添加(“OterhItem2”);
清单2.添加(“OterhItem3”);
清单2.添加(“OterhItem4”);
myListView.ItemsSource=list2;
}

更新:我尝试了同样的方法,但只使用了一个点击事件,效果很好。所以看起来这只会发生在双击事件中。

我很确定这个问题是由在新值中设置动画引起的,因为我在我的应用程序中得到了类似的结果

Frame fr = Window.Current.Content as Frame;
fr.IsEnabled = false;
   UpdateCollectionSomehow(...)
fr.IsEnabled = true;

在我的代码中,我只是在添加更多元素之前禁用了代码,问题就消失了。

双击事件触发了多少次?我知道有些人对他们不止一次的开火有意见。您可能需要确保
itemsource
仅设置一次。此外,与其每次都将
项资源
设置为一个新对象,还不如使用
可观察集合
,在本例中)并直接操作它。它只触发一次。我的原始代码,我使用的是ObservableCollection。但这是一个相当大的项目,所以为了消除我这边所有可能的问题,我尝试在尽可能小的版本上复制它。我还是有问题,你找到解决办法了吗?我的问题和以前完全一样。我刚刚重新设计了我的应用程序在前端的工作方式。这样我就不需要双击了。