对于一个新项目,我想尝试一个新的.net core 3.0 WPF项目,并且想与MvvmLight结合使用。但是,在.net core和Visual Studio Code中,您不会得到任何脚手架或默认项目。然后有一个谜团是如何使它正常工作...
我知道我需要在app.xaml.cs,mainwindow.xaml和mainwindow.xaml.cs中执行某些操作。以及创建一些ViewModelLocator服务。但是MvvmLight的文档在这方面还是空的。
我在SO(MvvmLightLibsStd10 and UWP)上发现了以下问题,但对于我来说还不完整,我也不确定应该使用常规软件包还是特殊的std10版本。
更新2019-06-26 我使用MvvmLightLibsStd10版本5.4.1.1。使用以下代码工作。
App.xaml
<Application.Resources>
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator" xmlns:vm="clr-namespace:$AssemblyName$.ViewModel" />
</ResourceDictionary>
</Application.Resources>
MainWindow.xaml
DataContext="{Binding ValidatorListViewModel, Source={StaticResource Locator}}">
ViewModelLocator.cs
using GalaSoft.MvvmLight.Ioc;
namespace $AssemblyName$.ViewModel
{
public class ViewModelLocator
{
public ViewModelLocator()
{
SimpleIoc.Default.Register<ValidatorListViewModel>();
}
public ValidatorListViewModel ValidatorListViewModel => SimpleIoc.Default.GetInstance<ValidatorListViewModel>();
}
}
答案 0 :(得分:4)
自从您提出这个问题以来的 1.5 年里发生了很多事情。 Microsoft 现在支持 MVVMLight 的替代品。您听说过 Microsoft.Toolkit.MVVM 吗?请参阅: https://github.com/windows-toolkit/MVVM-Samples 它应该与 .NET Core 更兼容。哎呀,我忘了它现在只是 .NET(对于 Rev5 及以上版本)
答案 1 :(得分:0)
“ 在我看来这还不完整”到底是什么意思?构建项目时出现任何错误吗?
我也在项目中使用MvvmLight。 例如:
在App.xaml中
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator"
d:IsDataSource="True"
xmlns:vm="clr-namespace:$AssemblyName$.ViewModel" />
</ResourceDictionary>
在MainWindow.xaml
DataContext="{Binding Main, Source={StaticResource Locator}}"
在ViewModelLocator.cs
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<MainViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
这应该可以解决问题...但是如上所述,如果您遇到任何错误,这将很有趣。