Я использую многоэкранный ListPicker (новый в 7.1/Mango control toolkit от Nov '11).ListPicker не вызывает SummaryForSelectedItemsDelegate при увольнении
Мой код ниже - «ванильный» вариант использования для ListPicker, за исключением того, что я инициализирую свойство зависимостей SelecetedItems новым списком, чтобы я мог добавить к нему что-то и правильно инициализировать выбранное состояние для ListPicker. Хотя этот вопрос воспроизводит, действительно ли это ...
Вывод SummaryForSelectedItemsDelegate вызывает при инициализации списка (например, когда я вызываю contactPicker.SetValue (ListPicker.SelectedItemsProperty)), но НЕ, когда я нажимаю кнопку «done», в ListPicker (хотя мой обработчик события SelectionChanged вызывает вызов).
Как только я отклоняю ListPicker, я получаю только строку, соответствующую первому выделенному элементу в «summary» для элемента управления (в отличие от элемента управления, вызывающего моего делегата, и получения списка выделенных элементов с разделителями-запятыми).
Это ошибка? Кто-нибудь еще сталкивается с этим? Есть ли обходной путь?
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);
}
});