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