【发布时间】:2014-02-05 09:17:45
【问题描述】:
当使用双击事件时 ListViews ItemSource - ObservableCollection 加载的项目较少时,我会遇到灾难性故障。现在写了一个非常简单的例子,我仍然得到同样的错误。
这是一个 Windows 8.1 应用商店应用程序。
简单示例:如果列表视图中有 6 个项目,并且我双击项目编号 3。然后列表视图重新绑定 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 事件,它工作正常。所以看起来这只发生在双击事件上。
【问题讨论】:
-
DoubleTapped事件触发了多少次?我知道有些人多次开火时遇到过问题。您可能需要确保ItemsSource只设置一次。此外,使用ObservableCollection(在这种情况下为<string>)并直接操作它可能更容易,而不是每次都将ItemsSource设置为一个新对象。 -
它只触发一次。我的原始代码,我使用的是 ObservableCollection。但这是一个相当大的项目,所以为了消除我这边所有可能出现的问题,我尝试在尽可能小的版本上复制它。我仍然遇到问题。
-
您找到解决方法了吗?我遇到了完全相同的问题
-
不,我没有。我刚刚重新设计了我的应用程序在前端的工作方式。这样我就不需要双击了。
标签: xaml listview winrt-xaml itemsource