`

在.NET 2.0中,让你的组件也可以绑定

    博客分类:
  • C#
阅读更多
MS的绑定应该说是相当方便的,他可以说是最佳的MVC模式实践,关于绑定的使用和好处我就不重复说了。
但在开发中,我们发现.NET 1.1的绑定还是有一些不足的,例如,我设计了一个Command对象,我有一个Menu对象,我希望Menu的Enabled绑定到Command的Enabled属性,很可惜,我的Menu不是Control,所以没有DataBinding属性,我需要扩展让他有DataBinding属性。
在.NET 2.0中包含了IBindableComponent接口,实现此接口,就可以不是Control的东西也实现绑定,下面是其中的代码:
        IBindableComponent Members#region IBindableComponent Members

        /**//// <summary>
        /// 当BindingContext属性发生改变时发生
        /// </summary>
        public event EventHandler BindingContextChanged;

        private BindingContext _bindingContext;
        /**//// <summary>
        /// 返回/设置绑定环境
        /// </summary>
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
        EditorBrowsable(EditorBrowsableState.Advanced),
        Browsable(false)]
        public BindingContext BindingContext {
            get {
                if (_bindingContext == null) {
                    _bindingContext = new BindingContext();
                }
                return _bindingContext;
            }
            set {
                if (_bindingContext != value) {
                    _bindingContext = value;
                    OnBindingContextChanged(EventArgs.Empty);
                }
            }
        }

        /**//// <summary>
        /// 触发BindingContext事件
        /// </summary>
        /// <param name="e">事件需要的参数</param>
        protected virtual void OnBindingContextChanged(EventArgs e) {
            if (BindingContextChanged != null) {
                BindingContextChanged(this, e);
            }
        }

        private ControlBindingsCollection _dataBinding;
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
        ParenthesizePropertyName(true),
        RefreshProperties(RefreshProperties.All)]
        public ControlBindingsCollection DataBindings {
            get {
                if (_dataBinding == null) {
                    _dataBinding = new ControlBindingsCollection(this);
                }
                return _dataBinding;
            }
        }

        #endregion
实现上,应该说是相当简单的,没有什么好说的。要测试此代码,可以:
            this.commandMenuItem1.DataBindings.Add(new Binding("Enabled", this.cmdSave, "Enabled"));
            this.commandMenuItem2.DataBindings.Add(new Binding("Enabled", this.cmdSave, "Enabled"));
这里,有俩个菜单绑定在同一个Command上,当你:
this.cmdSave.Enabled = !this.cmdSave.Enabled;
时,你会发现,俩个菜单自动变了。
分享到:
评论

相关推荐

    asp.net 2.0 基础知识

    下面介绍 ASP.NET 2.0 的新特性,以及在 Windows 系统中 ASP.NET 2.0 需要在什么样的运行 环境中进行测试和开发设计。 (1)体验 ASP.NET 2.0 新特性 Microsoft 在 ASP.NET 2.0 中引入大量的新功能,可将 ASP...

    ASP.NET 2.0快速入门 下载列表 微软

    Web part是ASP.NET 2.0的又一新特性,通过使用web part用户可以在客户端非常容易的重新部署网页的布局。通过本课的学习,听众可以了解到如何设计这种可以结构的网页。 • 开始时间: 2005-10-26 14:30:00 • 技术等级...

    ASP.NET 2.0技术内幕

    书中贯穿着专家的悉心指导、通俗易懂的编程指令和丰富的实例,这些都可以帮助您提升“功力”,开发出优秀的Web应用程序。 本书重要主题: ·开发丰富、一致的页面,并用主题和母版页来管理页面布局 ...

    ASP.NET2.0服务器控件与组件开发高级编程源代码part2

    全书共分33章,分别介绍了Ajax控件和组件、ASP.NET2.0部件控件、ASP.NET2.0安全、ASP.NET2.0表格式和分层式数据源控件、ASP.NET2.0表格式数据绑定控件、自定义架构导入扩展和ISerializable接口、基于提供程序的服务...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    第11章 ASP.NET 2.0中的数据绑定 307 11.1 数据源控件 307 11.1.1 SqlDataSource控件 310 11.1.2 XmlDataSource控件 316 11.1.3 ObjectDataSource控件 316 11.1.4 SiteMapDataSource控件 320 11.2 配置数据源...

    3.ASP.NET 2.0 入门经典(第4版) [压缩包1/10]

    ● 揭示了Visual Web Developer是构建功能丰富的ASP.NET2.0应用程序的理想环境 ● 保障Web站点的安全,提供登录功能和基于角色访问站点的内容 ● 利用ASP.NET 2.0的内置数据处理功能安全地更新数据的技巧 ● ...

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

    ASP.NET2.0网络编程自学手册源代码(留言板)

    人民邮电出版社的ASP.NET2.0网络编程自学手册第17章留言板的源代码,学习如何配置Web.config、学习如何使用VisualStudio2005中的模板、掌握SqlData类、掌握FreeTextBox组件、掌握DataList绑定技术、掌握DataReader...

    道不远人 深入解析ASP.NET 2.0控件开发

    全书用通俗易懂、平易近人的语言,讲述ASP.NET技术中最关键的部分――ASP.NET控件与组件的开发细节,从对ASP.NET编程模型的引入到ASP.NET控件最基本的知识,包括呈现内容,属性与持久化,服务端事件与ASP.NET回传,...

    asp.net教程 ASP.NET 参考手册

    在 W3School,我们提供完整的 ASP.NET 参考手册,其中包括内建对象和组件,以及它们的属性和方法。 ASP.NET 实例 ASP.NET 实例 一系列的 ASP.NET 实例。 内容目录 ASP.NET 简介 本章解释 ASP.NET 的概念。 ASP...

    spring.net中文手册在线版

    17.6.2.在.NET 2.0中执行回调 17.6.3. .NET 1.1 17.6.4.AdoTemplate方法指南 17.7.异常翻译 17.8.参数管理 17.8.1. IDbParametersBuilder 17.8.2. IDbParameters 17.9. Mapping DBNull values 17.10. Basic data ...

    asp.net知识库

    在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 ...

    ASP.NET 2.0 VS自定义渲染器-数据可绑定图像控件V.2.0

    V.2。 已更正代码-此项目包含一个Web自定义控件,用于直接从数据库渲染图像。 可以与图像字段,文本,日期或数字字段(生成包含文本的图像)以及URL字段(如常规图像控件)一起使用。

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    书中的所有代码都通过了ASP.NET 2.0和ASP.NET 3.5的测试。通过本书,您将学习到这些框架之间是如何进行协同以满足AJAx应用需求的。本书将为您提供开发ASP.NET AJAX应用所必需的技能和知识。 内容简介 本书以AJAX为...

    .NET 通用分页控件

    在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,而且有时候我们需要对DataList和Repeater甚至...

    DbEntry.Net3.9参考手册.chm

     而 DataSource 部分,因为绑定数据访问组件,所以可以只需要修 改配置文件,不需要修改任何代码的在不同的数据之间切换。另外,还支 持按命名约定的方式绑定“新建”和“编辑”页面的控件,以最少的代码 完成输入...

    PlugNT内容管理系统v2.0源码

    NT的HtmlBuilder组件更提供了与Sql查询语句绑定的模板机制,数据库可以是Access,Sql server,Oracle等中的任何一种类型。HtmlBuilder用微软的ASP.NET 2.0高效的面向对象语言C#设计,用HtmlBuilder组件可以开发出...

    缩略图水印组件3.0Demo

    ImageWaterMark3.0缩略图水印组件是基于Asp.Net2.0 C#.Net WebForm而开发的全功能组件,无需再服务器端安装AspJpeg组件,它的技术特点目前版本新增加了透明浮雕功能、水印平铺等,目前也是国内唯一支持透明浮雕的...

Global site tag (gtag.js) - Google Analytics