2

ピボットの 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 

ピボットの 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;

最初から、新しいアイテムがあるたびに新しいコレクションを ItemsSource に割り当てるのではなく、単に ObservableCollection を使用し、それを Pivot の ItemSource にバインドし、必要に応じて変更することを望んでいたことに言及したいと思います。ただし、それは単に機能せず、アプリをクラッシュさせます。

4

0 に答える 0