【发布时间】:2021-11-08 00:38:27
【问题描述】:
我正在测试 uno 平台解决方案,看看它是否足够灵活,并且可以在其中集成预先存在的 autofac (6.2.0) 和 Autofac.Extras.CommonServiceLocator(6.0.1) 的东西。 我想添加 ViewModelLocator 来自动解析视图模型。它适用于 UWP 和 wpf 项目,但不适用于 droid 或 WASM。 我在共享 app.xaml 中添加了资源
<Application
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
<!-- #Region MVM light view model locator -->
<ResourceDictionary>
<local:ViewModelLocator x:Key="ViewModelLocator" d:IsDataSource="True" />
</ResourceDictionary>
<!-- #Endregion -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
在mainpage.xaml中
DataContext="{Binding [TestViewModel], Source={StaticResource ViewModelLocator}}"
有了这个配置,构造函数在启动时被调用,我还想设置控制反转
public ViewModelLocator()
{
this._container = IOCContainerConfig.Configure();
var serviceLocator = new AutofacServiceLocator(this._container);
ServiceLocator.SetLocatorProvider(() => serviceLocator);
//this._dbContext = serviceLocator.GetInstance<IContext>();
//TestDbConnection(this._dbContext);
}
如上所述,这不适用于 droid 或 wasm 等其他类型的项目,定位器的构造函数永远不会被调用,但我没有错误,只是加载页面而没有后面的 viewmodel。
有什么想法或技巧使它适用于所有项目?
【问题讨论】:
标签: autofac uno-platform viewmodellocator