複数選択 ListPicker (11 年 11 月の 7.1/Mango コントロール ツールキットの新しいもの) を使用しています。
私のコードは以下のとおりです - ListPicker の「普通の」使用例ですが、SelecetedItems 依存関係プロパティを新しい List で初期化して、ListPicker の選択状態を適切に初期化できるようにします。この問題の再現は、私がこれを行うかどうかですが...
SummaryForSelectedItemsDelegate は、リストを初期化するときに呼び出されます (たとえば、contactPicker.SetValue(ListPicker.SelectedItemsProperty) を呼び出すとき) が、ListPicker の [完了] ボタンをクリックしたときではありません (SelectionChanged イベント ハンドラーは呼び出されます)。
ListPicker を閉じると、コントロールの "概要" で最初に選択された項目に対応する文字列のみが取得されます (コントロールがデリゲートを呼び出して、選択された項目のコンマ区切りのリストを取得するのとは対照的です)。
これはバグですか?他の誰かがこれに遭遇しましたか?回避策はありますか?
var contactPicker = new ListPicker()
{
MinWidth = minWidth,
ExpansionMode = ExpansionMode.FullScreenOnly,
SelectionMode = SelectionMode.Multiple,
SummaryForSelectedItemsDelegate = (list) => { return CreateCommaDelimitedList(list); },
IsTabStop = true
};
contactPicker.ItemsSource = listOfItems;
contactPicker.DisplayMemberPath = "Name";
contactPicker.SetValue(ListPicker.SelectedItemsProperty, new List<Item>());
// initialize the list picker selected values
foreach (var contactRef in listOfSelectedContacts)
contactPicker.SelectedItems.Add(contactRef);
contactPicker.SelectionChanged += new SelectionChangedEventHandler((o, ea) =>
{
// add all the newly added items
foreach (var added in ea.AddedItems)
{
Item addedItem = added as Item;
if (addedItem == null)
continue;
listOfSelectedContacts.Items.Add(addedItem);
}
// remove all the newly removed items
foreach (var removed in ea.RemovedItems)
{
Item removedItem = removed as Item;
if (removedItem == null)
continue;
listOfSelectedContacts.Items.Remove(removedItem);
}
});