【问题标题】:List item unresponsive on second click event列表项对第二次单击事件无响应
【发布时间】:2012-11-30 09:24:08
【问题描述】:

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

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

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

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

感谢您的帮助!

【问题讨论】:

    标签: windows-phone-7 xaml event-handling listbox


    【解决方案1】:

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

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

    YourListBox.SelectedIndex = -1;
    

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

    void Selection_Changed(...)
    {
       if(YourListBox.SelectedIndex == -1)
        return;
       //rest of your code
    }
    

    【讨论】:

      【解决方案2】:

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

      在 SelectionChanged 事件结束时清除 SelectedItem 即可。
      下面是一个可能有用的代码sn-p,

      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-02-05
        • 1970-01-01
        • 1970-01-01
        • 2017-07-03
        • 2011-12-18
        • 1970-01-01
        • 2017-12-13
        • 1970-01-01
        • 2022-12-05
        相关资源
        最近更新 更多