我在全景中使用列表框,就像全景图有5个项目一样,每个全景图项目都包含一个列表框。
列表项目有时不会被解雇,主要是第二次。对于第一个单击列表项时它们导航到下一页。当我再次回来时,我点击列表项目并没有被解雇。
使用SelectionChanged进行列表点击监听器。
我从网络搜索中得到一个建议,使用stackpannel而不是grid in,但是在某些地方由于组件排列而无法使用堆栈面板。
请建议我更改为stackpannel是唯一的方法,还是有任何其他解决方案。
欢迎任何形式的想法。
答案 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;
}
}