首页 > 编程语言 >用DevExpress实现基于HTML&CSS的桌面应用程序的UI(二)

用DevExpress实现基于HTML&CSS的桌面应用程序的UI(二)

时间:2022-12-01 10:11:57浏览次数:79  
标签:控件 DevExpress HTML UI avatar btnMore message CSS

DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

注意:目前基于HTML & CSS的控件正在积极研发中,可以作为技术预览提供,如果需要使用请下载最新版组件体验哦~

获取DevExpress 最新版下载

DevExpress技术交流群6:600715373      欢迎一起进群讨论

一组控件和组件允许开发人员构建HTML格式的UI,并使用CSS样式自定义UI元素的外观设置、大小、填充和布局选项,不再需要处理自定义绘制事件或更改大量属性来修改控件以匹配UI规范,可以使用HTML和CSS标记的知识为桌面应用程序构建布局。

在上文中(点击这里回顾>>),我们为大家介绍了HTML-CSS标记的一些基础概念,本文将继续为大家介绍如何动态指定HTML-CSS模板、动态自定义项目等,欢迎持续关注这个系列的文章哦~

HTML-CSS标记
动态指定HTML-CSS模板

许多控件使用HTML-CSS模板来呈现它们的项,例如ItemsViewItemsView.HtmlTemplate 属性指定的默认模板中生成它的所有项(记录)。

这些控件具有将模板分配给项的事件,从而动态覆盖默认模板:

示例

下面的ItemsView.QueryItemTemplate事件处理程序根据项的类型(IsOwnMessage设置)为不同的项分配不同的模板。

C#

void OnQueryItemTemplate(object sender, QueryItemTemplateEventArgs e) {
var message = e.Row as DevAV.Chat.Model.Message;
if(message == null)
return;
if(message.IsOwnMessage)
Styles.MyMessage.Apply(e.Template);
else
Styles.Message.Apply(e.Template);
//...
}

VB.NET

Private Sub OnQueryItemTemplate(ByVal sender As Object, ByVal e As QueryItemTemplateEventArgs)
Dim message = TryCast(e.Row, DevAV.Chat.Model.Message)
If message Is Nothing Then Return
If message.IsOwnMessage Then
Styles.MyMessage.Apply(e.Template)
Else
Styles.Message.Apply(e.Template)
End If
'...
End Sub
动态自定义项目

从模板生成项的控件也有事件来动态自定义每个项:

在控件中的每个项显示在屏幕上之前触发这些事件,它们允许开发人员访问将要呈现的单个HTML元素,并自定义它们的可见性和样式设置。

示例

下面的示例根据自定义逻辑更改HTML元素的可见性。

开发人员可以在下面的演示中找到这个示例的完整代码:Chat Client

C#

//CustomizeItem event handler:
void OnCustomizeItem(object sender, CustomizeItemArgs e) {
//...
if(message.IsLiked) {
var btnLike = e.Element.FindElementById("btnLike");
var btnMore = e.Element.FindElementById("btnMore");
if(btnLike != null && btnMore != null) {
btnLike.Hidden = false;
btnMore.Hidden = true;
}
}
if(message.IsFirstMessageOfBlock)
return;
if(!message.IsOwnMessage) {
var avatar = e.Element.FindElementById("avatar");
if(avatar != null)
//Display an empty region instead of the 'avatar' element.
avatar.Style.SetVisibility(Utils.Html.Internal.CssVisibility.Hidden);
}
//...
}

VB.NET

Private Sub OnCustomizeItem(ByVal sender As Object, ByVal e As CustomizeItemArgs)
Dim message = TryCast(e.Row, DevAV.Chat.Model.Message)
If message Is Nothing Then Return
If message.IsLiked Then
Dim btnLike = e.Element.FindElementById("btnLike")
Dim btnMore = e.Element.FindElementById("btnMore")
If btnLike IsNot Nothing AndAlso btnMore IsNot Nothing Then
btnLike.Hidden = False
btnMore.Hidden = True
End If
End If

If message.IsFirstMessageOfBlock Then Return
If Not message.IsOwnMessage Then
Dim avatar = e.Element.FindElementById("avatar")
'Display an empty region instead of the 'avatar' element.
If avatar IsNot Nothing Then avatar.Style.SetVisibility(Utils.Html.Internal.CssVisibility.Hidden)
End If
'...
End Sub
数据绑定

如果控件绑定到数据源,可以在HTML标记中使用以下语法来显示数据源字段的值:

${FieldName}

' $ '字符指定后面的文本是控件需要求值的表达式,表达式可以包含静态文本和绑定到多个字段的数据:

  • $text{FieldName}text
  • ${FieldName1}text{FieldName2}text

例如,下面的HTML代码显示了来自控件数据源的“UserName”字段的值:

HTML

<div class='contactName'>${UserName}</div>

下面的示例在用户名之前添加' Welcome '字符串:

HTML

<h1>$Welcome {UserName}!</h1>

更多DevExpress线上公开课、中文教程资讯请上中文网获取

标签:控件,DevExpress,HTML,UI,avatar,btnMore,message,CSS
From: https://www.cnblogs.com/AABBbaby/p/16940556.html

相关文章

  • Js:ResizeObserver 接口监视HTML元素尺寸的变化
    文档https://developer.mozilla.org/zh-CN/docs/Web/API/ResizeObserverhttps://github.com/que-etc/resize-observer-polyfill文档描述ResizeObserver接口监视El......
  • unity RPG Builder v1.1.0.8 插件分享
    仅供学习使用 一款制作RPG游戏的插件,提供了所有RPG游戏的功能包含技能,锻造,强化,任务,对话,背包等让开发者可以简单地点点点实现创造新的装备,怪物,NPC等功能有兴趣的小伙......
  • 在HTML中使用script
    script标签在html文档中使用script标签async<scriptsrc="1.js"async></script>async(可选)立即加载脚本1.立即加载脚本不阻塞页面其他操作(异步)异步加载完成......
  • 这回终于把Java类中Serialversionuid 作用讲的明明白白了
    实现Serializable接口的目的是为类可持久化,比如在网络传输或本地存储,为系统的分布和异构部署提供先决条件。若没有序列化,现在我们所熟悉的远程调用,对象数据库都不可能存在,......
  • HTTP与HTML基础知识
    今日内容概要前端与后端的概念超文本传输协议HTTP超文本标记语言HTML今日内容详细前端与后端的概念前端用于展示及获取数据的界面就是前端,前端的终点在于页面设计......
  • 前端与后端的概念、前端前戏、HTTP协议、HTML简介、HTML概览、预备知识、head内常见标
    目录前端与后端的概念前端前戏HTTP协议HTML简介HTML概览预备知识head内常见标签body内基本标签常见符号body内布局标签body内常用标签列表标签表格标签表单标签前端与后端......
  • 前端-HTML
    1.前端与后端的概念1.前端:任何与用户直接打交道的界面,都可以称之为前端(类似于前台接待的角色)。2.后端:不直接与用户打交道,主要负责内部真正的业务逻辑的执行(类似于......
  • 前端之HTML
    目录前端引入知识前端后端前端三剑客前端引入HTTP协议基于HTTP协议搭建HTMLHTMLHTML简介HTML概览HTML文档结构head常见标签body内标签基本标签常见符号布局标签常用标签列......
  • xcodebuild和xcrun实现自动打包iOS应用程序
    随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包......
  • 前端之html各种标签
    目录前端html标签前端与后端的概念为什么学前端前端三剑客前端前戏HTTP协议四大特性数据格式响应状态码HTML简介HTML概念预备知识head内常见标签body内基本标签常见符号bod......