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;
}
}
}
}
}
profession
ListPicker的ItemsSource是数据绑定到profls
var。问题:
每当我更改field_SelectionChanged
listpicker的选择项时,field
事件都会被多次调用。 (我希望它只被调用一次..)另一个奇怪的事情是,在最后一次调用中field_SelectedItems
等于旧的selectedItems(“更改”之前的那些)..
这是一个错误还是我的问题? (我该如何解决?)
修改
我检查过,如果在我选择项目之前列表选择器中没有选定的项目,它只会被调用一次。 (我的意思是在选择新项目之前,SelectedItems是空的)
答案 0 :(得分:3)
修正了:)
我使用了此答案中建议的代码:listPicker not updating selection in full mode
if (MyListPicker.SelectedIndex != -1)
{
//Code..
}
答案 1 :(得分:2)
我有两次调用selectedchange事件的相同问题。在listPicker_selectedchange事件结束时,将listpicker selected index设置为-1。
private void listpicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//Code
listpicker.SelectedIndex = -1;
}
谢谢Dan Barzilay !!