我正在使用多选 ListPicker(2011 年 11 月 7.1/Mango 控制工具包中的新选项)。
我的代码在下面 - ListPicker 的“普通”用例,除了我使用新 List 初始化 SelectedItems 依赖项属性,因此我可以向其中添加内容并正确初始化 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);
}
});