如何在更改Pivot的ItemsSource时阻止System.ArgumentOutOfRangeException

时间:2013-01-26 21:43:19

标签: windows-phone-7 windows-phone-8

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

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

E.g

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。但是它根本不起作用并使应用程序崩溃。

0 个答案:

没有答案