XAF之实现子导航栏

XAF之在代码中选中导航栏子项 思路很简单,我们用鼠标点击选中导航栏XAF做了什么事,在代码中把这些事做掉就行。XAF中处理导航栏响应的ViewController 是ShowNavigationItemController,该ViewController中的ShowNavigationItemAction是个SingleChoiceAction,它下面包含了许多ChoiceActionItem,这些ChoiceActionIt 阅读详情

点击导航栏某项,出现一个子导航栏,如图:


   实现原理其实很简单,主导航栏的"Navigation System"对应的也是一个DetailView,只不过这个DetailView包含一个Action类型的属性,如果不为该属性设计PropertyEditor,那么该项是无法通过UI编辑的,所以,说白了,就是为Action属性设计一个PropertyEditor。下面讲述一下如何完成这一任务:

1. 首先,定义两个Business类,一个NavigationObject代表图中主显示区的对象,注意包含了一个SingleChoiceAction和子项的集合。

public  class NavigationObject : BaseObject, INotifyPropertyChanged
    {
        private ItemsDisplayStyle defaultChildItemsDisplayStyle = ItemsDisplayStyle.List;
        private NavigationStyle navigationStyle = NavigationStyle.NavBar;
        private SingleChoiceAction action;
        private bool isWebApplication;
        private void action_Execute(object sender, SingleChoiceActionExecuteEventArgs e)
        {
            Console.WriteLine(string.Format("The '{0}' navigation item is selected", e.SelectedChoiceActionItem.Caption));
        }
        private void ProcessItem(NavigationItem item, ChoiceActionItemCollection choiceActionItemCollection, ModelNode parentModel)
        {
            object objectKey = Session.GetKeyValue(item);
            IModelNavigationItem modelNavigaionItem = parentModel.AddNode<IModelNavigationItem>(objectKey.ToString());
            FillNavigationItemModel(item, modelNavigaionItem);
            ChoiceActionItem choiceActionItem = new ChoiceActionItem(modelNavigaionItem, item);
            choiceActionItem.ImageName = item.ImageName;
            choiceActionItemCollection.Add(choiceActionItem);
            SortItems(item.Items);
            foreach (NavigationItem childItem in item.Items)
            {
                ProcessItem(childItem, choiceActionItem.Items, (ModelNode)modelNavigaionItem);
            }
        }
        private void FillNavigationItemModel(NavigationItem item, IModelNavigationItem modelNavigaionItem)
        {
            modelNavigaionItem.Caption = item.Name;
            modelNavigaionItem.Index = item.Index;
            if (item.ChildItemsDisplayStyle == DemoNavigationChildItemsDisplayStyle.Default)
            {
                modelNavigaionItem.ChildItemsDisplayStyle = item.NavigationObject.DefaultChildItemsDisplayStyle;
            }
            else
            {
                modelNavigaionItem.ChildItemsDisplayStyle = item.ChildItemsDisplayStyle == DemoNavigationChildItemsDisplayStyle.List ? ItemsDisplayStyle.List : ItemsDisplayStyle.LargeIcons;
            }
            modelNavigaionItem.ImageName = item.ImageName;
        }
        protected virtual void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        protected override void OnLoaded()
        {
            base.OnLoaded();
            BuildAction();
        }
        internal void BuildAction()
        {
            //B152525
            Action.Items.Clear();
            SortItems(NavigationItems);

            ModelApplicationCreator creator = NavigationDemoWindowController.ModelCreatorInstance;
            if (creator != null)
            {
                ModelNode modelNavigationItems = creator.CreateNode(Guid.NewGuid().ToString(), typeof(IModelNavigationItems));
                foreach (NavigationItem item in NavigationItems)
                {
                    if (item.Parent == null)
                    {
                        ProcessItem(item, Actio
XAF之深入理解Application Model 一.鸟瞰Application Model             XAF的两大特色是1.自动生成UI;2.使用相同的业务逻辑产生不同平台的程序,而这两大特色都归功于Application Model才能完成。首先,XAF扫描程序代码,提取声明的类做出分析后创建数据结构和用户接口。扫描分析的结果是创建中性的数据格式,使用该格式定义数据库结构和程序特性,才能跨平台地读取使用。这个中性格式的元数据就 阅读详情

相关推荐

基于DevExpress XAF的CRM/ERP/OA/SCM四合一源码深度解析

企业级管理系统开发中,模型驱动架构正成为提升交付效率的关键路径。通过定义业务对象即可自动生成列表、表单、权限与流程,这种开发范式大幅降低了传统编码的重复工作。DevExpress XAF作为成熟的模型驱动框架,为企业应用提供了统一的数据访问、权限验证和模块化管理能力。本文解析的一套基于XAF构建的源码集合,同时涵盖CRM、ERP、OA、SCM四大业务系统,展示了一个引擎支撑多条业务线的可行方案。从客户管理到供应链协同,从审批流到财务核算,源码在共享底层架构的同时保持了业务模块的独立性。对于正在评估企业管理系

weixin_29299807的博客 304

XAF实现子导航栏

xaf,和我博客中使用PropertyEditor实现子导航栏不同,这里使用自定义模版实现一个子导航,更为优雅

XAF-如何在DetailView中放置一个Action

XAF如何在DetailView中放置一个Action。xaf在DetailView中放置一个Action

XAF-让DetailView以PopupWondow打开(让DetailView以弹窗打开)

XAF教程,让DetailView以PopupWondow打开(让DetailView以弹窗打开)。 在ListView界面点击一条数据的时候会弹窗显示DetailView

大白话,Android Studio安装及其资源分享(离线gradle配置)

安装AndroidAtudio,并通过aliClound镜像与离线gradle配置,来跳过相对“繁文缛节”的过程,直接实现开发

wangzixuanemp的博客 3597

Starlink第三代终端与第二代终端的差异分析

SpaceX星链第三代终端实现显著升级,硬件售价维持599美元不变但性能全面提升。相比第二代产品,第三代终端取消自动调节电机改为手动定向,防水防尘等级提升至IP67,天线面积扩大46%,支持235台设备连接(提升87%),下载速度可达1Gbps(提升4倍),延迟降至20ms以下。新增3个千兆接口和WiFi6支持,同时推出199美元单独路由器选项。这些改进使第三代终端在保持价格优势的同时,更好地满足户外、移动和商业场景需求,标志着SpaceX卫星互联网服务从亏损销售转向盈利模式的重要转折。

通信行业老兵、物联网从业者,做一个有趣的普通人。 3030

SAP MM委外加工保姆级教程:从BOM配置到MIGO发货的完整避坑指南

本文提供SAP MM模块中委外加工的完整操作指南,涵盖从BOM配置到MIGO发货的全流程。详细解析委外采购和工序委外两种模式,包括主数据配置、采购订单创建及物料移动等关键步骤,帮助用户规避常见错误,提升供应链管理效率。特别适合制造业企业实施SAP外包业务参考。

weixin_26905487的博客 527

执行HDevelop项目

这一节,我们讲述的是如何用HDevEngine加载和执行一个HDevelop项目。代码部分来源于示例程序exec_program(源文件exec_program.cpp),检测塑料零件边界上的毛刺。1.Step 1:初始化首先,我们包含HALCON/C++和HDevEngine头文件以及命名空间。注意到在这个示例程序中,HDevEngine头文件已经包含在my_hdevoperatorimpl中,所

Z's Palace 2994

反应动力学仿真软件:ChemkinPro_(11).敏感性分析

敏感性分析是化学反应动力学仿真中的一项重要技术,通过对模型参数的变化对模型输出的影响进行评估,可以帮助研究人员优化模型、验证实验数据和评估不确定性。ChemkinPro 提供了强大的敏感性分析功能,可以方便地进行参数选择、仿真设置和结果解读。通过实际案例研究,我们可以看到敏感性分析在燃烧、催化和环境化学等领域的广泛应用,为科学研究和工程应用提供了有力支持。

kkchenjj的博客 1308

大数据分析案例-基于决策树算法构建信用卡违约预测模型

本项目旨在使用机器学习等算法构建信用卡违约预测模型,主要应用在金融相关领域,根据用户以往的行为数据来预测是否会违约,有利于商业银行防范和化解信用卡风险,完善信用卡违约风险管理工作。本次实验通过探索性分析以及使用决策树构建信用卡违约模型,得出以下结论:1.可透支金额主要集中在0~200000之间。2.性别对于可透支金额的影响较小。3.受教育程度和婚姻状况对可透支金额的影响较大。4.决策树模型的准确率为0.88,模型效果还有待提高。

m0_64336780的博客 7574

安装openclaw时出现npm error code ENOENT npm error syscall spawn git报错的解决方案

本文主要介绍了安装openclaw时出现npm error code ENOENT npm error syscall spawn git报错的解决方案,希望能对使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

uni-app 实现高德 / 百度 / 腾讯地图多端导航跳转(H5最全方案)

本文介绍了一套生产级可复用的多地图导航Hook封装方案。针对开发中常见的经纬度顺序混乱、中文乱码、参数不统一等问题,提供了统一解决方案。方案支持高德、百度、腾讯三大地图平台,封装了各平台的URI参数处理逻辑,包括坐标顺序转换、名称编码、导航模式适配等核心功能。通过组合式API设计,开发者只需调用统一入口即可实现多地图导航跳转,同时保留单独调用各平台的能力。文中还总结了6大常见坑点,并推荐默认使用高德地图作为最稳定的导航方案。该方案适用于车辆定位、物流配送等多种业务场景,可封装为可复用的Hooks组件。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 537

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: XAF之PropertyEditor
下一篇: XAF之Dashboard
qjpcpu
博客等级 码龄15年 59粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值