ListBox.SelectedItems 在代码隐藏中使用 async-await 分配 ItemsSource 时设置

ListBox.SelectedItems is set when assigning ItemsSource in code-behind using async-await

我有一个 ListBox,我在后面的代码中手动分配了它的 ItemsSource。起初这很好用,但是当我尝试异步执行时,它开始表现得很奇怪。在我分配 ItemsSource 之后,SelectedItems 被设置为列表中的第一个元素。我可以清除项目选择,但我真的很想知道是什么原因造成的。

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

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

XAML :

IsSynchronizedWithCurrentItem="False"

XAML.cs :

lbResults.IsSynchronizedWithCurrentItem = false;