自己动手写UI库——引入ExtJs(布局)

简介: 第一: 来看一下最终的效果 第二: 来看一下使用方法: 第三: Component类代码如下所示: public class Component     {                   public Component()         ...

第一:

来看一下最终的效果
第二:
来看一下使用方法:
第三:
Component类代码如下所示:
public class Component
    {  
       
        public Component()
        {
        }
        private string id;
        public string Id
        {
            get
            {
                return id;
            }
            internal set
            {
                id = value;
            }
        }
        private string region;
        public string Region
        {
            get
            {
                return region;
            }
            set
            {
                var str = string.Format("Ext.getCmp('{0}').setRegion('{1}'); ", this.Id, value);
                RenderContext.ExecScript(str);
                region = value;
            }
        }
        private int width;
        public int Width
        {
            get
            {
                return width;
            }
            set
            {
                var str = string.Format("Ext.getCmp('{0}').setWidth({1}); ", this.Id, value);
                RenderContext.ExecScript(str);
                width = value;
            }
        }
        private int height;
        public int Height
        {
            get
            {
                return height;
            }
            set
            {
                var str = string.Format("Ext.getCmp('{0}').setHeight({1}); ", this.Id, value);
                RenderContext.ExecScript(str);
                height = value;
            }
        }
    }
第一:
这是ExtJs里的一个基类,Ext里所有的界面元素都继承自这个基类
第二:
Id,Width,Region,Height都是这个基类的属性,在ExtJs中 Component类也包含这些属性,当然还有很多其他的属性,这里我们就没有一一例举了。
第三:
设置 Width,Region,Height这三个属性的时候我们都让浏览器执行了一段脚本,这段脚本让ExtJs设置控件的相应属性
第四:
Panel类的代码
第一:
我们再这个控件类的构造函数里执行了JS代码,并通过JS代码创建了这个控件
第二:
创建完控件之后,就马上获取了这个控件的ID,这个ID是EXTJS自动生成的ID,与页面上的其他控件是不会重复的
第三:
控件在界面上的ID获取到之后,我们就赋给这个控件的基类的属性
第五:
Viewport类的代码
第一:
这个类的代码的执行逻辑和panel代码类的逻辑相似
第二:
这个类和Panel类都继承自Container类
第六:
Container类的代码
第一:
与Extjs相同Container类继承自Compent类,也就是我们前面提到的控件的基类
第二:
我们再这个类中添加了Add方法,在这个方法里也是执行了一段JS函数,把一个控件添加到另一个控件中
第七:
工程的目录结构:
第一:
名称空间我们都加了NS后缀,这是为了使用方便
第八:
ExecScript方法的代码:
第一:
这里的代码和我们前面文章讲到的不一样,我这里改正用这种方式执行JS代码了,只有这种方式,才能顺利的得到JS的返回值
第二:
C#代码让浏览器执行了一个Exec的JS函数
第九:
Exec的JS方法的代码
第一:
传入参数就是我们想要执行的JS语句
第二:
用eval的方法执行这个JS语句,然后把返回值还给C#
 
 
好,本文大概就是这样,喜欢我的文章,请帮忙点推荐------------------->
目录
相关文章
|
6月前
|
JavaScript 前端开发 小程序
Vue 3的高颜值UI组件库
Vue 3的高颜值UI组件库
243 1
|
6月前
|
C# 开发者 Windows
基于Material Design风格开源、易用、强大的WPF UI控件库
基于Material Design风格开源、易用、强大的WPF UI控件库
374 0
|
4月前
鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI
鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI
137 1
|
27天前
|
Android开发 开发者 容器
flutter:&UI布局 (六)
本文档介绍了Flutter中的UI布局方式,包括线性布局(如Column和Row)、非线性布局(如Stack、Flex、Positioned)以及Wrap布局等。通过具体示例代码展示了如何使用这些布局组件来构建灵活多变的用户界面,例如使用Column垂直排列文本、使用Stack叠加组件、以及利用Wrap实现自动换行的按钮布局等。
|
26天前
|
Linux C# Android开发
分享3款开源、免费的Avalonia UI控件库
分享3款开源、免费的Avalonia UI控件库
|
2月前
|
搜索推荐 前端开发 C#
推荐7款美观且功能强大的WPF UI库
推荐7款美观且功能强大的WPF UI库
|
3月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
54 1
|
3月前
|
API Android开发
Android项目架构设计问题之选择和使用合适的UI库如何解决
Android项目架构设计问题之选择和使用合适的UI库如何解决
46 0
|
3月前
|
C# 开发者 Windows
一款基于Fluent设计风格、现代化的WPF UI控件库
一款基于Fluent设计风格、现代化的WPF UI控件库
|
3月前
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
115 0