在我的Windows Phone 7应用程序中,我有许多列表视图。每个listViewItem都有一个click事件(通过在我的xaml中将'selectionChanged'属性设置为listBox)。现在发生了一件非常奇怪的事情:
当我点击列表框中的项目时,第一次一切顺利,在这种情况下,用户将被带到另一个屏幕。当我从那个屏幕返回到列表框时,我选择了相同的listboxitem,但这次事件没有注册,没有任何反应......
然后,我首先必须点击另一个项目,让那些项目甚至开火,然后我才能点击第一项。换句话说,我不能连续两次为listItem触发click事件。我认为这是因为列表框上的事件处理程序显示'onSelectionChanged',如果您选择相同的项目,则选择在技术上没有改变。
那么我可以在列表框中使用其他eventHandling属性来注册其项目上的选择事件?
感谢您的帮助!
答案 0 :(得分:3)
AFAIK,Theres不是这样的事件。所以,解决方法是,
在第一页的OnNavigatedTo事件处理程序中,将SelectedIndex设置为-1
YourListBox.SelectedIndex = -1;
在执行此操作时,对Selection_Changed处理程序进行一次小修改
void Selection_Changed(...)
{
if(YourListBox.SelectedIndex == -1)
return;
//rest of your code
}
答案 1 :(得分: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;
}