2014-02-05 34 views
0

当使用Double Tap事件时,当ListViews ItemSource - ObservableCollection被加载的项较少时,我得到灾难性故障。现在写一个非常简单的例子,我仍然得到相同的错误。XAML - ListView DoubleTapped灾难性故障

这是一个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; 
    } 

更新:我试过相同,但只用螺纹事件,并能正常工作。所以看起来这只会发生在双重事件中。

+0

DoubleTapped事件触发多少次?我知道有些人遇到过不止一次的问题。这可能是因为你需要确保'ItemsSource'只被设置一次。此外,它可能更容易,而不是每次使用'ObservableCollection'(在这种情况下为'')并直接操作'ItemsSource'到一个新对象。 –

+0

它只发射一次。我的原始代码,我使用ObservableCollection。但是,这是一个相当大的项目,为了消除我所有可能出现的问题,我尝试在尽可能最小的版本上复制它。我仍然遇到问题。 – Edwin

+0

您是否找到了解决方法?我有完全相同的问题 – Oli

回答

0

我很确定这个问题是由新值生成动画引起的,因为我在我的应用中收到类似的东西。

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

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

相关问题