用HTML,Vue+element-UI做桌面UI
程序员文章站
2022-05-13 22:53:29
DSkin封装的WebUI开发模式开发桌面应用,使用Vue很方便。使用起来有点像WPF 下面用 element-UI 做个简单的例子。 运行效果;可以自己根据需求改布局效果。 主框架的element-UI 模板代码 其中 activeIndex 是模板中定义的一个属性, handleSelect 是 ......
dskin封装的webui开发模式开发桌面应用,使用vue很方便。使用起来有点像wpf
下面用 element-ui 做个简单的例子。
运行效果;可以自己根据需求改布局效果。
主框架的element-ui 模板代码
<div id="page" class="shadow"> <el-container> <el-header onmousemove="if(event.button == 0){ movewindow(); }" ondblclick="command_maxornor()"> <el-menu :default-active="activeindex" class="el-menu-demo" mode="horizontal" @select="handleselect" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b"> <el-menu-item index="1">dskin webui开发</el-menu-item> <el-submenu index="2"> <template slot="title"> 我的工作台 </template> <el-menu-item index="2-1">选项1</el-menu-item> <el-menu-item index="2-2">选项2</el-menu-item> <el-menu-item index="2-3">选项3</el-menu-item> <el-submenu index="2-4"> <template slot="title"> 选项4 </template> <el-menu-item index="2-4-1">选项1</el-menu-item> <el-menu-item index="2-4-2">选项2</el-menu-item> <el-menu-item index="2-4-3">选项3</el-menu-item> </el-submenu> </el-submenu> <el-menu-item index="3" disabled>消息中心</el-menu-item> <el-menu-item index="4">订单管理</el-menu-item> <span index="5" id="minimize" class="sys-btn" onclick="command_min();" onmousemove="event.stoppropagation()">0</span> <span index="6" id="maximize" class="sys-btn" onclick="command_maxornor()" onmousemove="event.stoppropagation()">1</span> <span index="7" id="close" class="sys-btn" onclick="command_close()" onmousemove="event.stoppropagation()">r</span> </el-menu> </el-header> <el-container> <el-aside width="200px"> <el-menu default-active="2" class="el-menu-vertical-demo" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b"> <el-submenu index="1"> <template slot="title"> <i class="el-icon-location"></i> <span>导航一</span> </template> <el-menu-item index="1-1" class="open-page" href="button.html">按钮</el-menu-item> <el-menu-item index="1-2" class="open-page" href="form.html">表单</el-menu-item> <el-menu-item index="1-3" class="open-page" href="table.html">表格</el-menu-item> <el-submenu index="1-4"> <template slot="title"> 选项4 </template> <el-menu-item index="1-4-1">选项1</el-menu-item> </el-submenu> </el-submenu> <el-menu-item index="2"> <i class="el-icon-menu"></i> <span slot="title">导航二</span> </el-menu-item> <el-menu-item index="3" disabled> <i class="el-icon-document"></i> <span slot="title">导航三</span> </el-menu-item> <el-menu-item index="4"> <i class="el-icon-setting"></i> <span slot="title">导航四</span> </el-menu-item> </el-menu> </el-aside> <el-main> <iframe frameborder="0" allowtransparency="true" src="button.html"></iframe> </el-main> </el-container> </el-container> </div>
其中 activeindex 是模板中定义的一个属性, handleselect 是select事件绑定的方法,我们可以直接在c#中定义这两个,它会自动绑定过来。不需要手动写js来new 一个vue对象绑定,这些在dskin中自动完成了的。
//这个c#代码相当于 js的 var page=new vue({el:"#page",data:{ activeindex:"1",},methods:{handleselect(a,b,c){ }}});
public class mainframe : dskin.forms.miniblinkpage { string _activeindex = "1"; public string activeindex { get { return _activeindex; } set { onpropertychanged(value, ref _activeindex); } } [jsfunction] public void handleselect(string a, jsvalue b, jsvalue c) { } }
右下角的内容,我采用的是iframe框架页面来做,这样做方便c#绑定以及 业务逻辑分离到单独c#类中。
简单的表格添加数据的例子
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <script src="js/jquery-1.9.0.min.js"></script> <script src="js/vue.js"></script> <link href="css/element.css" rel="stylesheet" /> <script src="js/element.js"></script> <link href="css/main.css" rel="stylesheet" /> </head> <body onload="$('body').addclass('body-active');"> <div id="page"> <el-table :data="data" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> </el-table> <el-button onclick="adddata()">添加数据</el-button> </div> </body> </html>
其中有一个添加数据的按钮,点击按钮会添加一行数据到表格中
public class table : miniblinkpage { public table() { data.add(new data { date = "sdaf", name = "dgsda", address = "hfdgdsfa" }); data.add(new data { date = "sdaf测试", name = "dgsda", address = "hfdgdsfa" }); } miniblinkcollection<data> data; //模板中绑定的数据 public miniblinkcollection<data> data { get { if (data == null) { data = new miniblinkcollection<data>(this); } return data; } }
[jsfunction]//按钮调用的添加数据的方法,点击按钮添加一行,同时会更新ui显示出来 public void adddata() { data.add(new data { date = "测试数据", name = "3sda", address = "gdsa" }); data.savechanges(); } } public class data { public string date { get; set; } public string name { get; set; } public string address { get; set; } }
运行效果
总体来说还是很简单,很方便的,有丰富的前端资源,可以快速开发出自己想要的效果
上一篇: git命令清单
下一篇: DotNetty网络通信框架学习
推荐阅读
-
html写css样式(用html和css做网页完整代码)
-
html写css样式(用html和css做网页完整代码)
-
记录vue用 html5+做移动APP 用barcode做扫一扫功能时安卓 的bug(黑屏、错位等等)和解决方法
-
html5用什么软件编辑程序(新手做html用的软件推荐)
-
关于用图片做无序列表的项目符号,我做出来怎么是这个样子?_html/css_WEB-ITnose
-
发现一个特效会让你有意思,有人知道这个用css可以做出来吗,怎么做?_html/css_WEB-ITnose
-
请教用CSS + DT、DD做可折叠菜单,二级菜单为什么会重叠在一起?_html/css_WEB-ITnose
-
html5的性能不输原生app 可以用拼积木的方式做HTML5产品
-
文字一部分黑色一部分白色的效果用css做怎么实现?_html/css_WEB-ITnose
-
请教用CSS + DT、DD做可折叠菜单,二级菜单为什么会重叠在一起?_html/css_WEB-ITnose