2

当我重新设置 Pivot 的 ItemsSource 属性时,我得到 System.ArgumentOutOfRangeException。

<phone:Pivot x:Name="Pivot" ItemsSource="{Binding Items}" />

例如

Items = {collection of 5 elements}
Pivot.SelectedIndex = 4;
Items = {collection of 5 elements} //no exception, item count matches previous
Items= {collection of 3 elements}  //throws System.ArgumentOutOfRangeException 

似乎如果 Pivot 的 SelectedIndex 高于新分配的集合中的项目计数,则会引发异常。我试图通过Pivot.SelectedIndex = 0在分配新值之前进行设置来防止它,Items但它没有帮助。

在设置 SelectedIndex 时,我也会遇到非常奇怪的行为,我通过延迟来缓解这种行为,例如:

//Setting a new value to Items 
Items = {collection of 5 elements}
await Task.Delay(50) //Pivot won't update SelectedIndex unless I pause a little, odd...
Pivot.SelectedIndex = 3;

我想提一下,从一开始我就希望简单地使用 ObservableCollection,将其绑定到 Pivot 的 ItemSource 并根据需要进行修改,而不是每次我有新项目时都为 ItemsSource 分配一个新集合。但是,它根本无法工作并使应用程序崩溃。

4

0 回答 0