询问者
ListView切换数据崩溃Bug

问题
-
做了个ListView切换数据的Demo,貌似发现了一个比较严重的Bug,不知道有没有前辈遇到过,有啥解决办法没有。。。。
在Page中添加了一个ListView,绑定好数据,之后在点击这个ListView的Item的时候切换这个ListView的数据,当切换数据动画播放的时候再次点击ListView则直接崩溃(快速点击ListView)。
具体代码如下:
XAML
<ListView Name="lv" SelectionChanged="lv_SelectionChanged_1"> <ListView.ItemTemplate> <DataTemplate> <Grid Margin="30,0,0,0"> <TextBlock Text="{Binding Name}" Foreground="Red" FontSize="25"/> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView>
CS
public sealed partial class TestPage : Page { private TestViewModel viewModel; private bool ShowData1 = true; public TestPage() { InitializeComponent(); viewModel = new TestViewModel(); lv.ItemsSource = viewModel.Data; viewModel.GetData1(); } private void lv_SelectionChanged_1(object sender, SelectionChangedEventArgs e) { if (ShowData1) { viewModel.GetData2(); ShowData1 = false; } else { viewModel.GetData1(); ShowData1 = true; } } } public class People { public string Name { get; set; } } public class TestViewModel { public ObservableCollection<People> Data; public TestViewModel() { Data = new ObservableCollection<People>(); } public void GetData1() { Data.Clear(); for (int i = 0; i < 20; i++) { Data.Add(new People() { Name = "Jack" + i }); } } public void GetData2() { Data.Clear(); for (int i = 0; i < 20; i++) { Data.Add(new People() { Name = "Tom" + i }); } } }
- 已编辑 Seraph89 2012年9月5日 8:03
全部回复
-
Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) 异常。我查到确实有这类bug的报告,在英文论坛http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/295d7ee6-8bc4-4326-9ea7-b68ee4c98a7a 此贴有描述,看上去是
lv.ItemsSource 设置上的问题。
你先用这个workaround:
private void lv_SelectionChanged_1(object sender, SelectionChangedEventArgs e) { if (ShowData1) { lv.ItemsSource = null; viewModel.GetData2(); lv.ItemsSource = viewModel.Data; ShowData1 = false; } else { lv.ItemsSource = null; viewModel.GetData1(); lv.ItemsSource = viewModel.Data; ShowData1 = true; } }
Bob Bao [MSFT]
MSDN Community Support | Feedback to us