ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类

解决MotionLayout布局Visibility失效 近日,在接手新项目的代码,其中布局使用的是MotionLayout,奈何在此之前根本使用过他,于是发现了一个巨坑的问题,其中就是,在viewModel的回调中设置布局为显示状态即。找到MotionLayout布局的layoutDescription属性MotionScene文件,添加忽略即可。发现代码已经执行完毕了,但是无论如何就是不显示。 阅读详情

作者:Dflying Chen (http://dflying.cnblogs.com/

本系列有三篇文章:

  1. ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类
  2. ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox
  3. ASP.NET Atlas简单控件介绍——Label,HyperLink,Select和Image

这篇是其中的第一篇:ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类

ASP.NET Atlas中引入了客户端控件的概念,用面向对象思想将客户端JavaScript将要操作的DOM元素封装起来,带来了更清晰的代码模型以及更好的可复用性(不足之处是效率有所降低)。Atlas的客户端控件是连接JavaScript与DOM元素的桥梁,我们应该尽可能的使用客户端控件与DOM元素打交道,也就是以Atlas的方法来编写我们的程序。同时,Atlas对JavaScript面向对象方面的强大扩展(请参考:ASP.NET Atlas对JavaScript的扩展),也让我们很容易通过继承,覆写等方法来构建自定义的控件。

在前面的一些帖子中,我介绍了一些Atlas中较复杂的控件。但同时,Atlas也提供了一些比较简单/基础的客户端控件,同样在开发中十分有用,让我们通过这个系列来熟悉Atlas自带的简单客户端控件。

所有的Atlas客户端控件都继承于Sys.UI.Control基类,同时Sys.UI.Control继承于Sys.Component基类,让我们先看看Sys.Component提供的属性:

  1. id:Atlas组件的标识符,将Atlas客户端组件与DOM元素连接起来。这个id值与DOM元素的id属性值相同,Atlas使用这个id以找到相关的DOM元素。
  2. bindings:该组件的绑定集合。关于Atlas中的绑定,请参考:Atlas揭秘 —— 绑定(Binding)
  3. dataContext:该组件的绑定的操作对象。如果您设置了这个属性,那么所有绑定条目默认会继承这个对象,但您也可以在绑定的声明中覆盖这个默认的设定。
  4. isInitialized:布尔值,代表该组件是否被初始化过。只读。
  5. isUpdating:该组件是否正在更新中,在开始调用beginUpdate()方法到调用endUpdate()方法期间为true,其他时间为false。只读。

Sys.Component还提供如下的方法:

  1. beginUpdateendUpdate:依赖于基类的实现,可以通过调用这两个方法延迟或一起更新一批组件,以提高性能或减少屏幕闪烁。
  2. initialize:构造函数,不必多言,继承类可以扩展该方法并初始化自己的成员。

还有如下事件:

  1. propertyChanged:当组件的某个属性变化时,应该引发该事件。Atlas绑定的实现依赖于这个事件。

现在让我们看看Sys.UI.Control提供的属性:

  1. accessKey:获取或设置控件的accessKey,该属性是DOM元素中的accessKey属性的包装。
  2. associatedElement:返回控件的相关DOM元素。这个属性应该传入给控件的构造函数,并在构造以后不可以修改。
  3. behaviors:该组件的Behavior集合。关于Atlas中的Behavior,请参考:在ASP.NET Atlas中创建自定义的Behavior
  4. cssClass:获取或设置控件的CSS Class,该属性是DOM元素中的class属性的包装。
  5. enabled:代表该控件是否被启用,该属性是DOM元素中的enabled属性的包装。
  6. parent:获取或设置该控件的父控件。
  7. style:获取该控件相对应的DOM元素的style属性值。
  8. tabIndex:获取或设置该控件的tab index。
  9. visibilityMode:获取或设置该控件在隐藏时的显示模式,可选枚举值:Sys.UI.VisibilityMode.Collapse代表该控件隐藏时不占用页面空间,Sys.UI.VisibilityMode.Hidden代表该控件隐藏时依然占有其位置。
  10. visible:获取或设置该控件是否可见。

Sys.UI.Control同样提供如下方法:

  1. addCssClass:为该控件添加一个CSS Class。
  2. removeCssClass:删除该控件的一个CSS Class。
  3. containsCssClass:返回布尔值,代表该控件是否有指定的CSS Class。
  4. toggleCssClass:如果该控件没有指定的CSS Class,则添加,如果有,则删除。
  5. focus:使该控件获得输入焦点。
  6. scrollIntoView:使该控件滚动到屏幕可视范围内。
  7. onBubbleEvent:处理该控件的子控件发出的Bubble事件。您可以在这篇文章:使用 ASP.NET Atlas PageNavigator控件实现客户端分页导航中找到该方法的实际应用。
  8. raiseBubbleEvent:该方法会调用该控件所有父控件的onBubbleEvent方法,来实现Bubble事件。您可以在这篇文章:使用 ASP.NET Atlas PageNavigator控件实现客户端分页导航中找到该方法的实际应用。

在接下来的几篇中,我会介绍继承或间接继承于Sys.UI.Control的Atlas内建控件,希望不会像这篇一样枯燥。

MotionLayout 中 visibility 无效问题 根本原因 :没有详细看 原文里有解释 我就不解释了 解决办法 在MotionScene动画文件中 把这个id排除一下 增加下面代码 <MotionScene xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <ConstraintSet android:id="@+id/start"> 阅读详情

相关推荐

性能优化之Android布局优化

 在Android开发中,我们常用的布局方式主要有LinearLayout、RelativeLayout、FrameLayout等,通过这些 布局我们可以实现各种各样的界面。此同时,如何正确、高效的使用这些布局方式来组织UI控件,是我们构建优秀Android App的主要前提之一。本篇内容就主要围绕Android布局优化来讨论在日常开发中我们使用常用布局需要注意的一些方面,

niejing654092427的专栏 889

asp.net core视图组件(ViewComponent简单使用

一、组成: 一个视图组件包括两个部分,派生自ViewComponent的类及其返回结果。类似控制器。 定义一个视图组件,如控制器一样,必须是公开,非嵌套,非抽象的类。一般,视图组件名称为类名去掉”ViewComponent“后缀。也可通过ViewComponentAttribute.Name属性进行明确指定。 二、视图组件方法: 在InvokeAsync/Invoke方法中定义逻辑,并返回IViewComponentResult。参数可直接来源于视图组件间调用,通过匿名类属性进行传递。 三、视图组件搜索路径

极客神殿 1691

Asp.Net core 视图组件ViewComponent

视图组件 ViewComponent 最近用了一下视图组件,还挺方便的,如果遇到公共的部分,可以抽出来,写成视图组件,方便调用 先上图看一下效果:比如首页的4个画红框的地方是4个模块,有些地方可能要重复用到,那么我们用视图组件就很方便。 开始编码步骤 第一步,先新建一个项目 原项目中不是包含Components文件夹的,这个是我自己后加上的,创建好Web项目后,添加文件夹Components 第二步,添加视图组件类 创建类过程中,必须要以Name+ViewComponent.cs为规范,

极客神殿 792
下一篇: 胡百敬老师的《撰写信息书籍注意事项》以及我自己的一些感想
DFlyingchen
博客等级 码龄24年 15粉丝 6原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值