gpt4 book ai didi

c# - 单独程序集中的 MVVM Light ViewModelLocator?设计时模式问题

转载 作者:行者123 更新时间:2023-11-30 13:04:25 25 4
gpt4 key购买 nike

我将 MVVM Light V4 与 Ninject 结合使用。我的 ViewModel 文件位于单独的程序集中。当 ViewModelLocator 处于启动程序集(查看文件)时效果很好。可混合性有效。

我想将 ViewModelLocator 放在 ViewModel 程序集中,但是当我这样做时,我失去了可混合性。之后它只能在启动的应用程序中正常工作(而不是在设计时模式下)。

View 模型定位器:

static ViewModelLocator()
{
ServiceLocator.Initialize();

if (ViewModelBase.IsInDesignModeStatic)
{
using (var module = new DesignBindingsModule())
{
ServiceLocator.Load(module);
}
}
else
{
using (var module = new DefaultBindingsModule())
{
ServiceLocator.Load(module);
}
}
}

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public IMainWindowViewModel MainWindow
{
get
{
return ServiceLocator.Get<IMainWindowViewModel>();
}
}

是否可以将 ViewModelLocator 放在单独的程序集中并在设计时模式下绑定(bind)到它?

最佳答案

问题解决了。我有一个代码错误。 ServiceLocator 被初始化两次,并抛出异常,无法正常绑定(bind)。奇怪的是,它只发生在设计器中,而设计器并没有显示异常。我重构了代码,问题消失了。我在单独的程序集中有所有 ViewModel 相关类。

关于c# - 单独程序集中的 MVVM Light ViewModelLocator?设计时模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9216001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com