【发布时间】:2011-10-06 19:39:45
【问题描述】:
我在 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,以便该人能够在需要时再次选择该项目,而不是更改为另一个项目并返回。
当然有一个简单的解决方法,即抛出一个 switch 函数并检查它是否已经为 -1,但这并不能解决递归问题。
感谢您的宝贵时间。
【问题讨论】:
标签: windows-phone-7 silverlight-4.0 listbox selectedindex