WPF口径.Micro使用了错误的平台提供商



在我的ShellViewModel PlatformProvider。当前结果如预期的那样是XamlPlatformProvider。在另一个ViewModel中导航到框架平台提供程序中。当前结果在DefaultPlatformProvider中。此外,如果我在ShellViewModel中触发一个函数,我可以看到PlatformProvider。Current仍然导致XamlPlatformProvider,因此ViewModel不受影响。

这会导致在caliburn . micro . execute . onuthread和其他平台特定的调用(如使用BindableCollection)上出现错误。它开始发生在更新一个大型项目到Caliburn之后。微版本4.0.173从3.2.0版本。

我无法在较小的测试项目中重现错误,因此我无法显示有意义的代码。我已经尝试用最小的引导器替换整个引导器,但仍然看到错误。

编辑:从caliburn . micro . execute . beginonuthread中的代码创建UI组件会给出错误:调用线程必须是STA,因为许多UI组件都需要这个。更改BindableCollection会产生以下错误:"这种类型的CollectionView不支持从与Dispatcher线程不同的线程更改其SourceCollection。

如果我把上面的场景包装在Application.Current.Dispatcher.Invoke中,上面的场景就可以工作。Micro无法使用Dispatcher/UI线程。

我在。net Framework 4.8上使用c#。

第二个抛出错误的ViewModel是在第二个包含NuGet包Caliburn.Micro. core而不是Caliburn.Micro的项目中。将两者更新到同一版本解决了这个问题。我使用了NuGets整合功能来更新Caliburn。Micro在整个解决方案中,错过了Caliburn.Micro.Core.

相关内容