学习008-01-03 Customize the Application UI and Behavior(自定义应用程序UI和行为)

Customize the Application UI and Behavior(自定义应用程序UI和行为)

In XAF, the data model defines the database structure and UI. Changes to your entity classes affect the UI. For example, if you add a new property to an entity class, a new editor appears in the corresponding List and Detail views.
在XAF中,数据模型定义了数据库结构和UI。对实体类的更改会影响UI。例如,如果向实体类添加新属性,则会在相应的List和Detail视图中显示新的编辑器。
You can use the auto-generated UI or customize it according to your business requirements and scenarios. This topic describes how to customize your application’s appearance and behavior.
您可以使用自动生成的UI或根据您的业务需求和场景对其进行自定义。本主题介绍如何自定义应用程序的外观和行为。

Customize the Application UI Metadata(自定义应用程序UI元数据)

Use Attributes in Code(在代码中使用属性)

You can use built-in attributes to edit the Application Model, create controls, and customize the application’s appearance and behavior. For example, you can validate field content, change field visibility, or format displayed data with one line of code.
您可以使用内置属性来编辑应用程序模型、创建控件以及自定义应用程序的外观和行为。例如,您可以使用一行代码验证字段内容、更改字段可见性或格式化显示的数据。
Follow the steps below to replace the Quote property’s single-line editor with a multi-line editor.
按照以下步骤将Quote属性的单行编辑器替换为多行编辑器。

1.Apply the FieldSizeAttribute attribute to the Quote property in the Testimonial class and pass Unlimited as the attribute’s parameter.
将FieldSizeAtoral属性应用于Testimonial类中的Quote属性,并将Unlimited作为属性的参数传递。

C#

// ...namespace SimpleProjectManager.Module.BusinessObjects {// ...public class Testimonial {[FieldSize(FieldSizeAttribute.Unlimited)]public virtual string Quote { get; set; }// ...}
}

2.Run the application and open the Testimonial Detail View. The Quote property editor now supports multi-line input:
运行应用程序并打开Testimonial Detail View。Quote属性编辑器现在支持多行输入:

ASP.NET Core Blazor
在这里插入图片描述
Windows Forms
在这里插入图片描述

Use the Model Editor(使用模型编辑器)

XAF exports data model settings to the application’s metadata (Application Model). If you do not want to define the application’s UI structure and behavior in your data model code, edit the application metadata in the Model Editor. Each project stores metadata settings as XML markup in XAMFL files. These files form the Application Model’s layered structure.
XAF将数据模型设置导出到应用程序的元数据(应用程序模型)。如果不想在数据模型代码中定义应用程序的UI结构和行为,请在模型编辑器中编辑应用程序元数据。每个项目都将元数据设置存储为XAMFL文件中的XML标记。这些文件构成应用程序模型的分层结构。

Follow the steps below to change the Customer object’s caption in the Model Editor:
按照以下步骤在模型编辑器中更改客户对象的标题:

1.In the SimpleProjectManager.Module project, double-click the Model.DesignedDiffs.xafml file to open it in the Model Editor.
在SimpleProjectManager模块项目中,双击Model. DesignedDiffs.xafml文件以在模型编辑器中打开它。

2.In the Model Editor node tree, navigate to the BOModel | SimpleProjectManager.Module.BusinessObjects | Customer node and set the ObjectCaptionFormat property to {0:FullName}.
在模型编辑器节点树中,导航到BOModel | SimpleProjectManager.Module.BusinessObjects | Customer节点,并将ObjectCaptionFormat属性设置为{0:FullName}。
在这里插入图片描述
3.Run the application. The caption of the Customer Detail View now displays the FullName property value.
运行应用程序。客户详细信息视图的标题现在显示FullName属性值。

ASP.NET Core Blazor
在这里插入图片描述
Windows Forms
在这里插入图片描述

Define Custom Logic and UI Elements(定义自定义逻辑和UI元素)

You can use the Model Editor and built-in attributes to change UI element and control options. Alternatively, you can create Controllers and Actions in code to replace the application’s default UI elements or implement custom business logic.
您可以使用模型编辑器和内置属性来更改UI元素和控件选项。或者,您可以在代码中创建控制器和操作来替换应用程序的默认UI元素或实现自定义业务逻辑。

A Controller is a component you use to change application flow, customize UI elements, and implement custom user interaction. Controllers can include Actions. XAF renders Actions in the UI as interactive elements, such as buttons or menu items.
Controller是用于更改应用程序流程、自定义UI元素和实现自定义用户交互的组件。控制器可以包含Actions。XAF将UI中的Actions呈现为交互式元素,例如按钮或菜单项。

Follow the steps below to implement a SimpleAction that allows users to mark the selected task as completed and sets the EndDate property of the ProjectTask object to the current date and time:
按照以下步骤实现SimpleAction,允许用户将选定的任务标记为已完成,并将ProjectTask对象的EndDate属性设置为当前日期和时间:

1.In the Solution Explorer, go to the MySolution.Module project, right-click the Controllers folder, and choose Add DevExpress Item | New Item… from the context menu to invoke the Template Gallery. Select the XAF Controllers | View Controller Visual Studio template, specify ProjectTaskController as the new item’s name, and click Add Item.
在解决方案资源管理器中,转到MySolutions. Module项目,右键单击控制器文件夹,然后从上下文菜单中选择Add DevExpress Item | New Item…以调用模板库。选择the XAF Controllers | View Controller Visual Studio template,将ProjectTaskController指定为新项目的名称,然后单击添加项目。

2.Visual Studio displays an autogenerated ProjectTaskController.cs file with a View Controller declaration. Add the following code to the controller constructor:
Visual Studio显示带有View Controller声明的自动生成的ProjectTaskController. cs文件。将以下代码添加到控制器构造函数:

C#

using DevExpress.ExpressApp;
using SimpleProjectManager.Module.BusinessObjects;namespace SimpleProjectManager.Module.Controllers {public class ProjectTaskController : ViewController {public ProjectTaskController() {// Specify the type of objects that can use the Controller.TargetObjectType = typeof(ProjectTask);// Activate the Controller in any type of View.TargetViewType = ViewType.Any;SimpleAction markCompletedAction = new SimpleAction(this, "MarkCompleted", DevExpress.Persistent.Base.PredefinedCategory.RecordEdit) {TargetObjectsCriteria = (CriteriaOperator.FromLambda<ProjectTask>(t => t.Status != ProjectTaskStatus.Completed)).ToString(),ConfirmationMessage ="Are you sure you want to mark the selected task(s) as 'Completed'?",ImageName = "State_Task_Completed"};markCompletedAction.SelectionDependencyType = SelectionDependencyType.RequireMultipleObjects;markCompletedAction.Execute += (s, e) => {foreach (ProjectTask task in e.SelectedObjects) {task.EndDate = DateTime.Now;task.Status = ProjectTaskStatus.Completed;View.ObjectSpace.SetModified(task);}View.ObjectSpace.CommitChanges();View.ObjectSpace.Refresh();};}}// ...
}

In the code above, the Object Space’s IObjectSpace.CommitChanges method commits changes to the database. An Object Space entity is an ORM-independent implementation of the Repository and Unit Of Work design patterns. Object Space allows you to query or modify data in the transaction. Refer to the following help topic for information on other Object Space methods: Create, Read, Update and Delete Data.
在上面的代码中,Object Space的IObjectSpace.CommitChanges方法向数据库提交更改。Object Space实体是Repository和Unit Of Work设计模式的与ORM无关的实现。Object Space允许您查询或修改事务中的数据。有关其他Object Space方法的信息,请参阅以下帮助主题:创建、读取、更新和删除数据。

Run the application and mark the selected task as completed.
运行应用程序并将选定的任务标记为已完成。

ASP.NET Core Blazor
在这里插入图片描述
Windows Forms
在这里插入图片描述
When you apply this action to multiple objects, it iterates through the selected objects, modifies their properties, commits changes to the database, and refreshes the screen.
当您将此操作应用于多个对象时,它会遍历选定的对象、修改它们的属性、将更改提交到数据库并刷新屏幕。

Next Lesson(下一课)

Reuse Implemented Functionality
重用实现的功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3247851.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C++ | Leetcode C++题解之第239题滑动窗口最大值

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {int n nums.size();vector<int> prefixMax(n), suffixMax(n);for (int i 0; i < n; i) {if (i % k 0) {prefixMax[i] num…

MySQL(7)内外连接+索引

目录 1.内外连接; 2. 索引; 1.内外连接: 1.1内连接: 语法: select 字段 from 表名 inner join 表名 on 字段限制; 1.2 外连接: 分为左右外连接; (1)左外连接: 语法: select * from 表名 left join 表名 on 字段限制. &#x1f330;查询所有学生的成绩&#xff0c;如果这个学生…

MySQL(8)事务

目录 1.事务; 1.事务: 1.1 如果CURD不加限制会这么样子? 可能造成数据同时被修改, 数据修改的结果是未知的.(可以想一下之前的抢票线程问题) 1.2 事务概念: 事务就是一组DML语句组成&#xff0c;这些语句在逻辑上存在相关性&#xff0c;这一组DML语句要么全部成功&#xff0…

【Python实战因果推断】40_双重差分11

目录 Heterogeneous Effect over Time Heterogeneous Effect over Time 有好消息也有坏消息。首先是好消息&#xff1a;你已经发现了问题所在。也就是说&#xff0c;你知道 TWFE 在应用于具有时间异构效应的交错采用数据时是有偏差的。用更专业的术语来说&#xff0c;您的数据…

TDesign组件库日常应用的一些注意事项

【前言】Element&#xff08;饿了么开源组件库&#xff09;在国内使用的普及率和覆盖率高于TDesign-vue&#xff08;腾讯开源组件库&#xff09;&#xff0c;这也导致日常开发遇到组件使用上的疑惑时&#xff0c;网上几乎搜索不到其文章解决方案&#xff0c;只能深挖官方文档或…

大厂面试官问我:Redis为什么使用哈希槽的方式进行数据分片?为什么不适用一致性哈希的方式?【后端八股文十三:Redis 集群哈希八股文合集(1)】

本文为【Redis 集群哈希 八股文合集&#xff08;1&#xff09;】初版&#xff0c;后续还会进行优化更新&#xff0c;欢迎大家关注交流~ hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注…

pdf怎么转换成图片?3种PDF转图片方法分享

pdf怎么转换成图片&#xff1f;将PDF转换成图片不仅满足了快速分享的需求&#xff0c;还便于在多种平台上展示。特别是在社交媒体、演示文稿或在线文档中&#xff0c;图片格式的PDF页面更加直观易用。此外&#xff0c;转换成图片后&#xff0c;我们还可以利用图片编辑工具对PDF…

【Linux】启动的秘密花园:深入GRUB、Init系统和Systemd

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Linux的起源与发展 2、Linux的特点 3、Linux启…

Java中的迭代器(Iterator)

Java中的迭代器&#xff08;Iterator&#xff09; 1、 迭代器的基本方法2、 迭代器的使用示例3、注意事项4、克隆与序列化5、结论 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java中&#xff0c;迭代器&#xff08;Iterator&#xff0…

隐性行为克隆——机器人的复杂行为模仿学习的新表述

介绍 论文地址&#xff1a;https://arxiv.org/pdf/2109.00137.pdf 源码地址&#xff1a;https://github.com/opendilab/DI-engine.git 近年来&#xff0c;人们对机器人学习进行了大量研究&#xff0c;并取得了许多成果。其中&#xff0c;模仿学习法尤其受到关注。这是一种从人…

无线通信 | 发射系统架构:两次变频发射机和直接变频发射机

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、发射系统架构 1、两次变频发射机 2、直接变频发射机…

微信小程序 vant-weapp的 SwipeCell 滑动单元格 van-swipe-cell 滑动单元格不显示 和 样式问题 滑动后删除样式不显示

在微信小程序开发过程中 遇到个坑 此处引用 swipeCell 组件 刚开始是组件不显示 然后又遇到样式不生效 首先排除问题 是否在.json文件中引入了组件 {"usingComponents": {"van-swipe-cell": "vant/weapp/swipe-cell/index","van-cell-gro…

图新地球-如何快速绘制各种形状的箭头(一分钟小视频演示)

0.序 随着近几年测绘成果的完善&#xff0c;很多检察院、规划院、自然资源局等政府与事业单位&#xff0c;日常的应用也都不在仅仅局限于原来的卫星影像底图了&#xff0c;很多院都应用上了无人机航测高分辨率影像以及倾斜模型。 可能经常需要再道路中央标注汽车行驶方向、掉头…

AQS源码解析(ReentrantLock)

什么是AQS:Juc中的大多数同步器都是围绕着一些相同的基础行为&#xff0c;比如等待队列&#xff0c;条件队列&#xff0c;共享&#xff0c;独占获取变量这些行为&#xff0c;抽象出来就是基于AQS&#xff08;AbstractQueuedSynchronizer&#xff09;实现的。所以可以把AQS看成这…

Iterator 与 ListIterator:Java 集合框架中的遍历器比较

Iterator 与 ListIterator&#xff1a;Java 集合框架中的遍历器比较 1、Iterator1.1 特点 2、ListIterator2.1 特点 3、Iterator 和 ListIterator 的区别4、示例4.1 使用 Iterator 遍历 Set4.2 使用 ListIterator 遍历 List 并修改 5、总结 &#x1f496;The Begin&#x1f49…

智慧农业新纪元:解锁新质生产力,加速产业数字化转型

粮食安全乃国家之根本&#xff0c;“浙江作为农业强省、粮食生产重要省份&#xff0c;在维护国家粮食安全大局中肩负着重大使命。浙江粮食产业经济年总产值已突破4800亿元&#xff0c;稳居全国前列&#xff0c;然而&#xff0c;同样面临着规模大而不强、质量效益有待提升、数字…

全网超详细客户端连接Redis

使用官方Redis Insight&#xff08;不支持中文&#xff09; 下载地址 https://redis.io/insight/ RedisInsight - The Best Redis GUI 下载信息可随便填写 添加redis 点击链接

艺术与技术的交响曲:CSS绘图的艺术与实践

在前端开发的世界里&#xff0c;CSS&#xff08;层叠样式表&#xff09;作为网页布局和样式的基石&#xff0c;其功能早已超越了简单的颜色和间距设置。近年来&#xff0c;随着CSS3的普及&#xff0c;开发者们开始探索CSS在图形绘制方面的潜力&#xff0c;用纯粹的代码创造出令…

Kafka 高并发设计之数据压缩与批量消息处理

《Kafka 高性能架构设计 7 大秘诀》专栏第 6 章。 压缩&#xff0c;是一种用时间换空间的 trade-off 思想&#xff0c;用 CPU 的时间去换磁盘或者网络 I/O 传输量&#xff0c;用较小的 CPU 开销来换取更具性价比的磁盘占用和更少的网络 I/O 传输。 Kafka 是一个高吞吐量、可扩展…

【PostgreSQL】PostgreSQL简史

博主介绍&#xff1a;✌全网粉丝20W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…