当我重新设置 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 分配一个新集合。但是,它根本无法工作并使应用程序崩溃。