列表框项目未被触发

时间:2013-04-04 06:30:36

标签: windows-phone-7 listbox click listitem

我在全景中使用列表框,就像全景图有5个项目一样,每个全景图项目都包含一个列表框。

列表项目有时不会被解雇,主要是第二次。对于第一个单击列表项时它们导航到下一页。当我再次回来时,我点击列表项目并没有被解雇。

使用SelectionChanged进行列表点击监听器。

我从网络搜索中得到一个建议,使用stackpannel而不是grid in,但是在某些地方由于组件排列而无法使用堆栈面板。

请建议我更改为stackpannel是唯一的方法,还是有任何其他解决方案。

欢迎任何形式的想法。

1 个答案:

答案 0 :(得分:2)

在ListBox中选择一个项目时,它会保留selectedindex的记录。当再次点击相同的元素时,selectedindex没有变化,因此不会触发SelectionChanged。因此,您可以做的是在每次选择之后或在向后导航到列表框页面之后将selectedindex设置回-1

//In the onnavigatedto function, set the listbox selectedindex to -1
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        MyListBox.SelectedIndex = -1;
    }

并像这样修改你的selectionchanged事件

 private void MyListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //let our code run only if index is not -1
        if (MyListBox.SelectedIndex != -1)
        {
            //Your selectionchanged code
        }
    }

希望这有帮助

更新:对于您的Panorama案例

private void MyListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        ListBox listbox = (sender as ListBox);
        //let our code run only if index is not -1
        if (listbox.SelectedIndex != -1)
        {
            //Your selectionchanged code
            At the end of it set the index back to -1
            listbox.SelectedIndex = -1;
        }
    }