我目前正在使用一个可观察的集合来存储我的ListView数据对象.将新对象添加到集合中工作正常,listView正确更新.但是,当我尝试更改集合中对象的某个属性时,listView将无法正确更新.例如,我有一个可观察的集合DataCollection.我试试
_DataCollections.ElementAt(count).Status = "Active";
Run Code Online (Sandbox Code Playgroud)
由于按下按钮,我在长时间操作之前执行此更改.listView不会反映更改.所以我补充一下myListView.Items.Refresh(); 这是有效的,但是在button_click方法完成之前,listView不会刷新,这在那时是不行的.例如:
button1_Click(...)
{
_DataCollections.ElementAt(count).Status = "Active";
myListView.Items.Refresh();
ExecuteLongOperation();
_DataCollections.ElementAt(count).Status = "Finished";
myListView.Items.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
状态将永远不会转到"活动",它将在方法完成后直接转到"已完成".我也尝试使用这样的调度程序:
button1_Click(...)
{
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Active"; myListView.Items.Refresh(); });
ExecuteLongOperation();
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Finished"; myListView.Items.Refresh(); });
}
Run Code Online (Sandbox Code Playgroud)
但是,这似乎也不正常.任何提示或想法将不胜感激.