首页 > 其他分享 >开篇:数据驱动UI的设计理念

开篇:数据驱动UI的设计理念

时间:2023-06-29 13:36:46浏览次数:63  
标签:时代 演示 开篇 UI 设计 组件 驱动 WPF



在线演示:http://v.youku.com/v_show/id_XNzA0NDc1ODE2.html

清晰版视频+代码下载:http://115.com/lb/5lbcfwdfuwis


一、概述

本演示主要是对WPF一个非常重要的设计理念做一个简单的概述。这个理念就是:数据驱动UI的设计理念。这是我们的开篇,我们先来看一下这个设计理念,然后感受一下它与我们之前的掌握的UI设计方式有着怎样的不同。


总体来说,Windows GUI开发大致上经历了4个时代。分别为:API时代、封装时代、组件化时代和WPF时代。本演示主要是对组件化时代的GUI设计和WPF时代的GUI设计做一个初步的对比。大家如果对API时代和封装时代的GUI设计感兴趣,可以在互联网查找相关的资料,自行了解学习。


演示分三部分:


1、组件化时代和WPF时代UI开发的对比。


2、Demo演示。分别使用WinForms的UI设计方式和WPF的UI设计方式演示对比。


3、小结。



二、组件化时代和WPF时代UI开发的对比
组件化时代


.NET体系中的WinForm开发可以看成是这方面典型代表。


1、消息被封装成事件。比如说按钮的单击操作,系统仍然按照消息的方式进行处理,但开发模型却将其封装成了事件(Click)。从此,我们便针对于各种各样不同的事件来编写程序。


2、事件驱动UI。用户或者系统触发某个事件,程序员在事件中编写各种代码,包括对界面修改的相关代码。


WPF时代:


1、专门的UI设计语言XAML。是一种标签式的语言,类似于HTML,有标签名,也有各种各样的属性和事件,详细内容可参见稍后的篇章。比如下面的这段XAML代码,呈现出来的界面如下图所示:

<Window x:Class="WPFApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WPFApp" Height="244" Width="549" ResizeMode="NoResize" Background="#FFF0F0F0" Loaded="Window_Loaded">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBox Width="100" Height="23" Name="NumberTextBox1" HorizontalContentAlignment="Center" />
        <TextBox Width="100" Height="23" Grid.Column="1" Name="NumberTextBox2" HorizontalContentAlignment="Center" />
        <TextBox Width="100" Height="23" Grid.Column="2" Name="NumberTextBox3" HorizontalContentAlignment="Center" />
        <Slider Grid.Row="1" Grid.ColumnSpan="3" VerticalAlignment="Center" Maximum="100" Margin="12,0" Name="NumberSlider" />
        <TextBox Width="100" Height="23" Grid.Row="2" Name="NumberTextBox4" HorizontalContentAlignment="Center" />
        <TextBox Width="100" Height="23" Grid.Row="2" Grid.Column="1" Name="NumberTextBox5" HorizontalContentAlignment="Center" />
        <TextBox Width="100" Height="23" Grid.Row="2" Grid.Column="2" Name="NumberTextBox6" HorizontalContentAlignment="Center" />
    </Grid>
</Window>

效果如下图所示:


开篇:数据驱动UI的设计理念_WPF UI 数据驱动 组件化 XAML

2、数据驱动UI。数据是核心,是主动的;UI从属于数据并表达数据,是被动的。当数据发生改变后,与该数据相关的UI元素也会做出相应的改变。至于UI做出怎样的改变,这是程序员可以自行定义的。


程序的本质是:数据+算法,组件化时代的程序开发,使得我们紧密的围绕在UI的周围去编写代码,而WPF时代,则让我们将注意力集中在数据上,至于界面的呈现则可以使灵活多变的,甚至是各种各样的呈现方式。


详细内容请参考演示视频!


标签:时代,演示,开篇,UI,设计,组件,驱动,WPF
From: https://blog.51cto.com/u_3319687/6581475

相关文章

  • 大数据分析工具有哪些?详解瓴羊Quick BI
    随着大数据时代的来临,企业对数据的需求变得越来越迫切。大数据分析工具,包括数据挖掘工具、大数据处理框架、商业智能及数据可视化工具等,正成为企业管理者的得力助手。瓴羊QuickBI作为一款国产BI工具,帮助企业用户实现高效、快速、准确的企业大数据处理与分析,成为国内优秀的大数据分......
  • 【雕爷学编程】Arduino动手做(136)---0.91寸OLED液晶屏模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • Kubernetes(k8s) Web-UI界面(一):部署和访问仪表板(Dashboard)
    目录一.系统环境二.前言三.仪表板(Dashboard)简介四.部署Kubernetes仪表板(Dashboard)五.访问Kubernetes仪表板(Dashboard)5.1使用token登录Dashboard5.2对sa账号kubernetes-dashboard授权5.3访问Dashboard六.总结七.附加信息一.系统环境本文主要基于Kubernetes1.21.9和Linux操作......
  • Android system & system_ext & product等分区中的build.prop文件是怎么生成的?
    Androidsystem&system_ext&product等分区中的build.prop文件是怎么生成的? #http://aospxref.com/android-13.0.0_r3/xref/build/make/core/sysprop.mk #http://aospxref.com/android-13.0.0_r3/xref/build/make/tools/buildinfo.sh buildinfo.sh脚本内容:#!/bin......
  • 小米,MiUI文字转语言没有首选引擎
    小米,MiUI文字转语言没有首选引擎,可以试着下载“小爱语音引擎”。链接:小爱语音引擎-小米应用商店(mi.com)微云:点击此处                            ......
  • 【雕爷学编程】Arduino动手做(135)---W5100 网络扩展板模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 图书商城项目练习①管理后台Vue2/ElementUI
    本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程。面向初学者,本人也是初学者,搬砖技术还不成熟。项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite)、到后端服务Node.js(Express),再到Web端的Vue,包含服务端、管理后台、商城网站、小程序/App,分......
  • 驱动开发:应用DeviceIoContro模板精讲
    在笔者上一篇文章《驱动开发:应用DeviceIoContro开发模板》简单为大家介绍了如何使用DeviceIoContro模板快速创建一个驱动开发通信案例,但是该案例过于简单也无法独立加载运行,本章将继续延申这个知识点,通过封装一套标准通用模板来实现驱动通信中的常用传递方式,这其中包括了如何传递......
  • Three.js教程:gui.js库(分组)
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生gui.js库(分组)当GUI交互界面需要控制的属性比较多的时候,为了避免混合,可以适当分组管理,这样更清晰。gui交互界面不分组gui交互界面不分组,只有一个默认的总的菜单。constgui=newGUI();//创建GUI对象......
  • 软件版本GA、RC、beta、Build 代表的含义
    GAGeneralAvailability,正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。RELEASE正式发布版,官方推荐使用的版本,有的用GA来表示。比如spring。Stable稳定版,开源软件有的会用stable来表示正式发布的版本。比如Nginx。Final最终版,也是正式发布版的一种表示方法......