3

在我的 Windows Phone 7 应用程序中,我有许多列表视图。每个 listViewItem 都有一个单击事件(通过在我的 xaml 中将“selectionChanged”属性设置为 listBox)。现在发生了一件非常奇怪的事情:

当我第一次点击列表框中的一个项目时,一切顺利,在这种情况下,用户会被带到另一个屏幕。当我从该屏幕返回到列表框时,我选择了相同的列表框项,但这次事件没有注册,没有任何反应......

然后我首先必须点击另一个项目,让那些甚至开火,然后我只能点击第一个项目。所以换句话说,我不能连续两次触发 listItem 的单击事件。我认为这是因为列表框上的事件处理程序显示“onSelectionChanged”,如果您选择相同的项目,则选择在技术上没有改变。

那么我可以在列表框上使用哪些其他 eventHandling 属性来注册其项目上的选择事件?

谢谢你的帮助!

4

2 回答 2

3

AFAIK,没有这样的事件。所以,解决方法是,

在第一页的 OnNavigatedTo 事件处理程序中,将 SelectedIndex 设置为 -1

YourListBox.SelectedIndex = -1;

在这样做的同时,对您的 Selection_Changed 处理程序进行一个小的修改

void Selection_Changed(...)
{
   if(YourListBox.SelectedIndex == -1)
    return;
   //rest of your code
}
于 2012-11-30T09:42:57.957 回答
3

在您的情况下, ListBox 中的 SelectedItem 是第一次设置。第二次点击同一个项目时,从技术上讲,它不是一个 SelectionChanged 事件,因此它不会触发。

在 SelectionChanged 事件结束时清除 SelectedItem 就可以了。
下面是一个可能有用的代码片段,

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    //
    // do your stuff here
    //

    //reset the selection of the sender (ListBox)
    (sender as ListBox).SelectedItem = null;
}
于 2012-11-30T15:39:11.930 回答