本文主要是介绍Avalonia框架下面使用Prism框架实现MVVM模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
默认情况下,使用Avalonia模板创建的Avalonia项目自带了Mvvm框架,其实用着也蛮好用的,但是前期在WPF开发中习惯了使用Prism框架,所以今天我们就来研究一下如何在Avalonia项目里面引入Prism框架来提高开发效率。
创建Avalonia项目
如果你还不知道怎么创建Avalonia项目,请参考我上一篇文章Avalonia开发之HelloWrold
创建好的项目结构
使用Nuget安装Prism框架
打开Nuget包管理器,在里面搜索:prism.dry
,在列表里面找到:Prism.DryIoc.Avalonia
选择最新版本进行安装即可。安装成功以后如下:
修改App.axaml文件,支持Prsim架构
App.axaml文件更改
App.axaml.cs文件更改
这一块有几个需要特别注意的点:
public override void Initialize(){AvaloniaXamlLoader.Load(this);base.Initialize();}
Initialize方法里面必须要加上一句:base.Initialize();
否则渲染不出来主窗口程序。
还有就是OnFrameworkInitializationCompleted()
因为我们用了prism框架,不用再这样MainWindow绑定ViewModel.
public override void OnFrameworkInitializationCompleted(){//if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)//{// desktop.MainWindow = new MainWindow// {// DataContext = new MainViewModel()// };//}//else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)//{// singleViewPlatform.MainView = new MainView// {// DataContext = new MainViewModel()// };//}base.OnFrameworkInitializationCompleted();}
完成上面的调整,我们运行程序看下效果,如下图:
眼尖的小伙伴应该发现了问题,这它吖的没有把内容渲染出来吖!我们看下上节课的截图:
Prism框架其它适配调整
-
继承基类调整
要解决这个问题也不难,其实就是因为Avalonia
我们用的还是Avalonia的默认MVVM框架,它的底层VM是继承自:ReactiveObject
,而Prism的MVVM框架VM是继承:BindableBase
,不信我们可以看代码:
我们把这里改成BindableBase
,改好后的代码如下:
-
设置页面视图模型应自动连接到视图
设置ViewModelLocator.AutoWireViewModel=true
,如下图:
运行一些查看效果:
大功告成,下一篇我将带领大家看一下Avalonia如何使用Prism区域进行区域导航。
这篇关于Avalonia框架下面使用Prism框架实现MVVM模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!