Wpf ListBox.SelectedItems是在使用异步等待在代码隐藏中分配ItemsSource时设置的

Wpf ListBox.SelectedItems是在使用异步等待在代码隐藏中分配ItemsSource时设置的,wpf,asynchronous,listbox,itemssource,Wpf,Asynchronous,Listbox,Itemssource,我有一个列表框,并在代码隐藏中手动分配其ItemsSource。一开始这很好,但当我尝试异步执行时,它开始表现得很奇怪。在我分配ItemsSource之后,SelectedItems就被设置为列表中的第一个元素。我可以清除项目选择,但我真的想知道是什么导致了这一点 lbResults.ItemsSource = await Task.Factory.StartNew(() => { return Context.ResultsList; }); 此问题最有可能是由ListBox.

我有一个列表框,并在代码隐藏中手动分配其ItemsSource。一开始这很好,但当我尝试异步执行时,它开始表现得很奇怪。在我分配ItemsSource之后,SelectedItems就被设置为列表中的第一个元素。我可以清除项目选择,但我真的想知道是什么导致了这一点

lbResults.ItemsSource = await Task.Factory.StartNew(() =>
{
    return Context.ResultsList;
});

此问题最有可能是由
ListBox.IsSynchronizedWithCurrentItem
引起的。将设置更改为
false
,您的问题将得到解决

XAML:

IsSynchronizedWithCurrentItem="False"
lbResults.IsSynchronizedWithCurrentItem = false;
XAML.cs:

IsSynchronizedWithCurrentItem="False"
lbResults.IsSynchronizedWithCurrentItem = false;

此问题最有可能是由
ListBox.IsSynchronizedWithCurrentItem
引起的。将设置更改为
false
,您的问题将得到解决

XAML:

IsSynchronizedWithCurrentItem="False"
lbResults.IsSynchronizedWithCurrentItem = false;
XAML.cs:

IsSynchronizedWithCurrentItem="False"
lbResults.IsSynchronizedWithCurrentItem = false;

这就成功了,非常感谢你。在对IsSynchronizedWithCurrentItem进行了一些研究之后,我发现这是由于ItemSource在分配给列表框之前被排序(设置了CurrentItem)造成的。这就成功了,非常感谢。在对IsSynchronizedWithCurrentItem进行了一些研究之后,我发现这是由于在将ItemSource分配给ListBox之前对其进行排序(设置CurrentItem)造成的。