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;
我有一个 ListBox,我在后面的代码中手动分配了它的 ItemsSource。起初这很好用,但是当我尝试异步执行时,它开始表现得很奇怪。在我分配 ItemsSource 之后,SelectedItems 被设置为列表中的第一个元素。我可以清除项目选择,但我真的很想知道是什么原因造成的。
lbResults.ItemsSource = await Task.Factory.StartNew(() =>
{
return Context.ResultsList;
});
这个问题很可能是由 ListBox.IsSynchronizedWithCurrentItem
引起的。将设置更改为 false
,您的问题将得到解决。
XAML :
IsSynchronizedWithCurrentItem="False"
XAML.cs :
lbResults.IsSynchronizedWithCurrentItem = false;