【发布时间】:2017-02-12 16:24:24
【问题描述】:
我的 MVVM 应用程序中的 ObservableCollection 有一个奇怪的行为,更确切地说是在负责从 NServiceBus 接收消息的代码部分:
public class MyViewModel: ViewModelBase, IHandleMessages<CarMoved>
{
public ObservableCollection<CarData> Cars= new ObservableCollection<CarData>();
public Task Handle(CarMoved message, IMessageHandlerContext context)
{
...
Cars.Add(new Car());
return Task.CompletedTask;
}
}
所以我希望 Handle 方法将一个新对象添加到我的 ObservableCollection 中,但对象的数量保持不变。 我创建了测试按钮来检查是否可以使用按钮添加新对象,并且此测试按钮工作正常。 我还调试了 Handle 方法,我可以看到当我在 Handle 方法中时 Observable 集合中的对象数量增加了,但是一旦我离开该方法,所有这些都会改变 - 对象的数量返回到旧的数字.
我尝试使用 Task.Run(..); 添加对象任务.Wait();假设它可能需要一些时间。它没有帮助。
请告诉我如何解决这个问题以及为什么会发生?
【问题讨论】:
-
如果您不希望有人能够在不看代码的情况下猜出它是如何定义的,请发布您的 Handle 方法的完整实现。
-
这是一个完整的方法:我创建一个新对象的实例并将其添加到列表中
-
您是否尝试过我回答中的建议或发生了什么?
标签: c# wpf mvvm messaging nservicebus