当使用Double Tap事件时ListViews ItemSource - ObservableCollection使用较少的项加载时,我遇到了灾难性的失败。现在写了一个非常简单的例子,我仍然得到同样的错误。
这是Windows 8.1商店应用程序。
简单示例:如果我在列表视图中有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;
}
更新:我尝试了相同但只有一个Tapped事件,它工作正常。所以看起来这只发生在双击事件中。
答案 0 :(得分:0)
我很确定这个问题是由新值中的动画引起的,因为我在我的应用中遇到了类似的事情。
Frame fr = Window.Current.Content as Frame;
fr.IsEnabled = false;
UpdateCollectionSomehow(...)
fr.IsEnabled = true;
在我的代码中,我只是在添加更多元素之前禁用代码,问题就消失了。