C# ListPicker SelectionChanged被多次调用
ListPicker是来自 代码:C# ListPicker SelectionChanged被多次调用,c#,xaml,events,windows-phone-8,C#,Xaml,Events,Windows Phone 8,ListPicker是来自 代码: 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
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;
}
}
}
}
}
- 请注意,
ListPicker的ItemsSource是绑定到profession
var的数据profls
- 我修改了Listpicker,这样我还可以设置SelectedItems属性,不仅可以从中读取(遵循指南),而且效果很好
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;
}
}
}
}
}
每当我更改字段
listpicker的selecteditems时,就会多次调用字段\u SelectionChanged
事件。(我希望它只被调用一次)另一个更重要的事情是,在最后一次调用中,字段_SelectedItems
与旧的SelectedItems(在“更改”之前的字段)相等
这是一个bug还是我的问题?(如何修复?
编辑:
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;
}
}
}
}
}
我选中了,如果在我选择项目之前,listpicker中没有选择的项目,那么它似乎只会被调用一次。(我的意思是,在我选择新项目之前,SelectedItems为空)已修复:)
我使用了这个答案中建议的代码:
固定:)
我使用了这个答案中建议的代码:
我遇到了同样的问题,selectedchange事件被调用了两次。在listPicker\u selectedchange事件结束时,将listPicker selected索引设置为-1
private void listpicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//Code
listpicker.SelectedIndex = -1;
}
谢谢你,丹·巴兹莱 我遇到了同样的问题,selectedchange事件被调用了两次。在listPicker\u selectedchange事件结束时,将listPicker selected索引设置为-1
private void listpicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//Code
listpicker.SelectedIndex = -1;
}
谢谢你,丹·巴兹莱 您可以显示订阅
SelectionChanged
事件的代码吗?@MatthewWatson它在XAML中您可以显示订阅SelectionChanged
事件的代码吗?@MatthewWatson它在XAML中