0

パノラマに 5 つの項目がある場合、各パノラマ項目にリストボックスが含まれるように、パノラマ内でリストボックスを使用しています。

listitem は、主に 2 回目で、時々起動されません。リスト項目がクリックされたときの最初のそれらの場合、次のページに移動します。私が戻ってきて、もう一度リストアイテムをタップすると、解雇されません。

リストクリックリスナーにSelectionChangedを使用しています。

Web 検索でグリッドの代わりに stackpannel を使用するよう提案を受けましたが、コンポーネントの配置によってはスタック パネルを使用できない場所があります。

stackpannel に変更することが唯一の方法であるか、またはこれに対する他の解決策があるかどうかを提案してください。

どんなアイデアでも大歓迎です。

4

1 に答える 1

2

ListBox で 1 つの項目が選択されると、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 に答える