【发布时间】:2021-09-18 22:53:17
【问题描述】:
我们正在将 WPF 应用程序迁移到 .NET 5。
今天我们在使用 名为 MVVMLight 的 Galasoft 库时遇到了一些问题。我们看到 .NET Standard 没有更新。我们不能使用 a.e. EventToCommand 班级。
您知道我们可以管理哪些选项吗?
【问题讨论】:
标签: .net wpf mvvm mvvm-light .net-5
我们正在将 WPF 应用程序迁移到 .NET 5。
今天我们在使用 名为 MVVMLight 的 Galasoft 库时遇到了一些问题。我们看到 .NET Standard 没有更新。我们不能使用 a.e. EventToCommand 班级。
您知道我们可以管理哪些选项吗?
【问题讨论】:
标签: .net wpf mvvm mvvm-light .net-5
常规的MVVMLight 和MVVMLightLibs 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。
【讨论】: