首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Uno平台ViewModelLocator

Uno平台ViewModelLocator
EN

Stack Overflow用户
提问于 2021-09-12 10:16:58
回答 1查看 55关注 0票数 0

我正在测试uno平台解决方案,看看它是否足够灵活,是否可以集成预先存在的autofac (6.2.0)和Autofac.Extras.CommonServiceLocator(6.0.1)的东西。我想添加ViewModelLocator来自动解析视图模型。它使用的是UWP和wpf项目,而不是droid或WASM。我在shared app.xaml中添加了资源

代码语言:javascript
复制
<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中

代码语言:javascript
复制
   DataContext="{Binding [TestViewModel], Source={StaticResource ViewModelLocator}}"

在这个配置中,构造函数是在启动时调用的,我还想在其中设置控制反转内容

代码语言:javascript
复制
        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定位器的构造函数从未调用过,但我没有错误,只是页面加载时没有后面的视图模型。

有什么想法或小贴士可以让它在所有项目中工作吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-17 15:40:29

根据资源类型的不同,Uno平台仅在访问时才会对ResourceDictionary中的某些资源进行惰性初始化。这是作为性能优化来完成的。

为了保证ViewModelLocator构造函数总是在所有平台上被调用,从代码中调用它可能更好,比如从App.xaml.cs中的App构造函数调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69150490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档