2014-02-05 66 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; 

在我的代碼中,我只是在添加更多元素之前禁用了代碼,問題就消失了。

相關問題