0

我在全景图中使用列表框,例如如果全景图有 5 个项目,那么每个全景图项目都包含一个列表框。

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

我正在将 SelectionChanged 用于列表单击侦听器。

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

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

欢迎任何想法。

4

1 回答 1

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
        }
    }

希望这可以帮助

更新:对于您的全景案例

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;
        }
    }
于 2013-04-04T08:22:11.130 回答