1

ListPicker はWP8 Toolkit のコントロールです。

コード:

private void field_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // Make sure we don't handle the event during initiation.
    if (e.RemovedItems != null && e.RemovedItems.Count > 0)
    {
        if (this.field.SelectedItems != null)
        {
            if (this.field.SelectedIndex != -1)
            {
                ListPicker_SelectionChanged(sender, e);
                //Make needed proffesions visable:
                profls.Clear();
                foreach (ListPickItem item in field.SelectedItems)
                    switch (item.Tag)
                    {
                        default:
                            foreach (ListPickItem iitem in profl[9])
                                profls.Add(iitem);
                            break;
                        case 90017:
                            foreach (ListPickItem iitem in profl[0])
                                profls.Add(iitem);
                            break;
                        case 9000:
                            foreach (ListPickItem iitem in profl[1])
                                profls.Add(iitem);
                            break;
                    }
            }
        }
    }
}
  • professionListPicker の ItemsSource は変数にデータ バインドされていることに注意してくださいprofls
  • Listpicker を変更して、SelectedItems プロパティを設定し、そこから読み取るだけでなく (このガイドに従って)、うまく機能するようにしました。

問題:

リストピッカーの選択項目field_SelectionChangedを変更するたびに、イベントが複数回呼び出されます。field(私はそれを一度だけ呼び出したい..)もう一つの奇妙なことは、最後の呼び出しの1つでfield_SelectedItems、古いselectedItems(「変更」の前のもの)と等しいことです..

それはバグですか、それとも私の問題ですか?(どうすれば修正できますか?)


編集:

チェックしたところ、アイテムを選択する前にリストピッカーでアイテムが選択されていない場合、一度だけ呼び出されるようです。(新しいアイテムを選択する前に SelectedItems が空であることを意味します)

4

2 に答える 2

3

修理済み :)

この回答で提案されているコードを使用しました: listPicker not updated selection in full mode

if (MyListPicker.SelectedIndex != -1)
{
 //Code..
}
于 2013-06-10T20:10:28.507 に答える
2

selectedchange イベントが 2 回呼び出されるという同じ問題がありました。listPicker_selectedchange イベントの最後で、listpicker の選択インデックスを -1 に設定します。

private void listpicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  //Code
  listpicker.SelectedIndex = -1;
}

ありがとう、ダン・バージレイ!!

于 2013-11-28T09:31:43.713 に答える