首页 > 其他分享 >XAF Blazor 中使用 Blazor 组件

XAF Blazor 中使用 Blazor 组件

时间:2022-11-24 15:11:23浏览次数:70  
标签:视图 ObjectKey 组件 Blazor 我们 XAF

前言

文档标题是不是感觉有点奇怪,但实际我们在XAFBlazor中使用Blazor组件是很繁琐的,我们需要将Blazor组件封装成属性编辑器(PropertyEditor),再用非持久化对象去承载它。当我们有许多这样的Blazor组件时,不仅工作量会大增,同时还容易出错。下面我们可以通过一个巧妙的方法来减少这样重复的操作,这篇文章只是给出原理,EasyXaf.BlazorTabbedMdi模块( https://www.cnblogs.com/haoxj/p/16916525.html )对它做了实现。

演示

image

原理

在继续阅读之前,你需要知道如何将Blazor组件集成到XAF中去,在有了上面所说的知识后,我们说一下它的实现原理及注意事项。

我们知道在导航项(IModelNavigationItem)中有ObjectKey属性及View属性,将View设置为一个详情视图(DetailView),将ObjectKey设置为相应的主键,就可以直接导航到对应的详情。我们将其改造一下,详情视图是展示Blazor组件的视图,而ObjectKey是Blazor组件的类型名称,这样我们就可以设置不同的ObjectKey值来展示不同的Blazor组件。详情视图的ModelClass是一个非持久化对象,代码如下:

image

由于非持久化对象的数据需要我们自己提供,我们可以订阅NonPersistentObjectSpace的ObjectByKeyGetting事件,通过Key的值返回对应的Blazor组件类型,代码如下:

image

需要注意ObjectKey中不能包含点(.),由于XAFBlazor会将ObjectKey作为Url的一部分,而Blazor中对点的处理是请求文件,所以这里我们将点替换为减号(-)。

当我们得到了Blazor组件的类型后,我们就可以将其展示出来,代码如下:

image

DynamicComponent可以通过类型动态加载组件

上面就是在XAF中使用Blazor组件的思路,如果想再丰富一些,可以创建一个ComponentNavigationItemAttribute,将其放到Blazor组件中,用于收集导航,这是XAF模型的知识,可以参考之前的文章。

image

标签:视图,ObjectKey,组件,Blazor,我们,XAF
From: https://www.cnblogs.com/haoxj/p/16921586.html

相关文章