私はc#で非常に奇妙な問題に遭遇していて、これを引き起こしている原因を知りたかっただけです。私には自分の理論がありますが、完全にはわかりません。それを再現できるかどうかだけを確認したいと思います。
wp7Silverlight4の標準ピボットページ。
<Pivot>
<PivotItem>
<Listbox Width="400" Height="500" x:Name="box" SelectionChanged="myhandle">
<ListBoxItem x:Name="item1">
<TextBlock Height="40" Width="200" Text="hi everyone!"/>
</ListBoxItem>
<ListBoxItem x:Name="item2">
<TextBlock Height="40" Width="200" Text="No Wai"/>
</ListBoxItem>
<ListBoxItem x:Name="item3">
<TextBlock Height="40" Width="200" Text="Ya Rly!"/>
</ListBoxItem>
</Listbox>
</PivotItem>
</Pivot>
私のC#には、次のものがあります。
private void myhandle(object sender, SelectionChangedEventArgs args)
{
var selection ="";
selection = (sender as Listbox).SelectedIndex.ToString();
box.SelectedIndex = -1;
}
問題は次のとおりです。3つのlistboxitemsのいずれかをクリックすると、myhandleコードは適切なSelectedIndexと等しい選択を行いますが、そのbox.SelectedIndex =-1;
行にヒットし、次にrefires
myhandle関数にヒットします。そうすることで、選択は-1になります。
なぜスタックをバックアップするのかわかりません。これは再帰関数であってはなりません。
私の目標はアイテムを選択することですが、SelectedIndexを-1に戻して、必要に応じて別のアイテムに変更して元に戻すのではなく、アイテムをもう一度選択できるようにします。
確かに、スイッチ関数をスローして、それがすでに-1であるかどうかを確認する簡単な修正がありますが、それは再帰の問題を解決しません。
時間をありがとう。