Я столкнулся с очень странной проблемой в C #, и я просто хотел знать, что является причиной этого.У меня есть свои теории, но я не совсем уверен, и просто хочу посмотреть, можно ли их воспроизвести.
Стандартная сводная страница в wp7 silverlight 4.
<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;
}
Вот проблема: всякий раз, когда я нажимаю на один из трех элементов списка, код myhandle делает выбор равным правильному SelectedIndex, но затем он достигает строки box.SelectedIndex =-1;
и затем refires
функция myhandle.При этом выбор теперь равен -1.
Я понятия не имею, почему он восстанавливает стек.Это не должно быть рекурсивной функцией.
Моя цель - выбрать элемент, но затем вернуть SelectedIndex обратно в -1, чтобы человек мог выбрать элемент еще раз, если это необходимо, вместопереход к другому элементу и обратно.
Конечно, есть простое исправление - бросить функцию переключателя и проверить, есть ли уже -1, но это не решает проблему рекурсии.
Спасибо за время.