.NET Framework 4.7 到 .NET 5 迁移与 Galasoft MVVMLight 库

问题描述

我们正在将 WPF 应用程序迁移到 .NET 5。

今天我们遇到了名为 MVVMLight 的 galasoft 库的一些问题。我们看到 .NET Standard 没有更新。我们不能使用 a.e. EventToCommand 课。

您知道我们可以管理哪些选项吗?

解决方法

常规的 MVVMLightMVVMLightLibs NuGet 包与 .NET 5 不兼容,它们仅与 .NET Framwork 和一些其他平台兼容。但是,有一些适用于 .NET Standard 1.0 的专用软件包也适用于 .NET 5。

您可以在官方 MVVMLight 网页 here 上阅读有关这些版本的更多信息。请注意,此版本不支持 IServiceProvider 接口。

SimpleIoc 组件使用的一个特定接口 IServiceProvider 在 .NET Standard 1.0 中不可用。 [...] ServiceLocator 类不再可用。

这会影响 SimpleIoC,您必须通过静态 SimpleIoc.Default 成员来代替。

// OLD var nav = ServiceLocator.Current.GetInstance<INavigationService>();
// NEW
var nav = SimpleIoc.Default.GetInstance<INavigationService>();

如果您正在搜索 EventToCommand 的替换,另一种方法是使用 XamlBehaviors for WPF。这是 Microsoft 的一个库,用于替换旧的 Blend 行为。

您可以安装 NuGet 包 Microsoft.Xaml.Behaviors.Wpf,它兼容 .NET Framework、.NET Core 和 .NET 5。相当于 EventToCommand 的是 InvokeCommandAction