C# 如何在不同的项目中使用MvvmLight SimpleIoc

C# 如何在不同的项目中使用MvvmLight SimpleIoc,c#,wpf,mvvm-light,C#,Wpf,Mvvm Light,目前,我正在构建一个C#库,它将用于不同的WPF应用程序。这样的库应该经过很好的测试,所以我特别使用MVVM和MVVM Light。 MvvM Light有一个简单的IOC,它在ViewModelLocator类的静态cstor中初始化(至少在开箱即用时)。当我运行我的库时,这个静态cstor被调用。但是,当从另一个名为MyProject的WPF项目引用库时,不会执行初始化。唯一的解决办法是在MyProject中使用ViewModelLocator,但这对MyProject造成了不可接受的限制。

目前,我正在构建一个C#库,它将用于不同的WPF应用程序。这样的库应该经过很好的测试,所以我特别使用MVVM和MVVM Light。 MvvM Light有一个简单的IOC,它在ViewModelLocator类的静态cstor中初始化(至少在开箱即用时)。当我运行我的库时,这个静态cstor被调用。但是,当从另一个名为MyProject的WPF项目引用库时,不会执行初始化。唯一的解决办法是在MyProject中使用ViewModelLocator,但这对MyProject造成了不可接受的限制。有没有办法在非启动项目中激发ViewModelLocator的静态cstor

这个问题并不新鲜,我发现了类似的公式,例如和。 然而,在这两种情况下,都没有人提出答案,现在我想知道是否有一个有新见解的人可以帮忙


Thnx

这是一个猜测,但这里是

ViewModelLocator和视图之间的链接位于XAML文件中,通常通过静态资源。以下是我的一个项目中资源e的定义:

 <Application.Resources>
    <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:Rcl.Reports.DataModelManager.ViewModel" />
  </Application.Resources>

不需要ViewModelLocator的完整命名空间路径。当MVVM自行安装时,它会生成该视图,并假设ViewModelLocator将位于您安装它的主WPF项目中(您需要在其中安装它,因为该项目将直接使用MVVMLight)

如果您有错误的名称空间,而不是库中的名称空间,那么WPF将找不到它,并且将静默地什么也不做


检查名称空间的定义是否正确,看看会发生什么。

Brilliant,这很有效。但是,此代码确实意味着用户必须在app.xaml文件中输入一些代码。也许可以将我的库打包成一个Nuget包,并在安装时让该包修改app.xaml。我以后再试试。又是唐克斯。