欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用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 做个简单的例子。

 

运行效果;可以自己根据需求改布局效果。

用HTML,Vue+element-UI做桌面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()">&#48;</span>
                    <span index="6" id="maximize" class="sys-btn" onclick="command_maxornor()" onmousemove="event.stoppropagation()">&#49;</span>
                    <span index="7" id="close" class="sys-btn" onclick="command_close()" onmousemove="event.stoppropagation()">&#114;</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; } }

 

运行效果

用HTML,Vue+element-UI做桌面UI

 

总体来说还是很简单,很方便的,有丰富的前端资源,可以快速开发出自己想要的效果