`

在.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入门经典:C#编程篇.pdf

    在ASP.NET 2.0中,C#可以用来创建服务器控件、处理用户事件、实现业务逻辑等。 4. **Web Forms**:Web Forms是ASP.NET 2.0中的一个主要开发模型,它允许开发者使用控件驱动的方式来构建动态Web应用。Web Forms控件...

    .net 2.0 环境安装包

    在.NET 2.0中,CLR进行了优化,提高了性能,并且增强了对ngen.exe(本机图像生成器)的支持,使得预编译的代码可以更快地运行。 3. 类库: .NET Framework 2.0包含大量类库,覆盖了从基本数据类型到高级网络通信、...

    asp.net 2.0动态网站开发教程

    虽然ASP.NET 2.0本身并不直接支持AJAX,但可以通过使用UpdatePanel控件和ScriptManager组件实现部分页面更新,这在一定程度上提供了类似AJAX的功能。 九、Web服务和WCF ASP.NET 2.0还提供了创建和消费Web服务的能力...

    ASP.NET2.0实用教程(C#版)书中例子.rar

    这个“ASP.NET2.0实用教程(C#版)书中例子”PPT很可能会涵盖以上这些主题,并通过实例演示如何在实践中应用这些技术。PPT中的例子可能包括创建简单的Web表单、使用控件进行数据绑定、实现用户身份验证以及利用AJAX...

    ASP.NET 2.0程序设计案例教程(课件)

    Web部件是可重用的、自包含的UI组件,用户可以在页面上自由移动、缩放和配置。Web部件框架使得创建交互式、个性化的用户体验变得更加容易。 通过本“ASP.NET 2.0程序设计案例教程(课件)”,学习者不仅可以深入...

    《Asp.net 2.0高级编程》(pdf版).rar

    Asp.net 2.0的配置管理也有了很大的改进,不再依赖XML格式的Web.config文件,而是引入了更友好的用户界面。读者可以通过这本书了解到如何配置身份验证、授权、错误处理等系统设置。 文件名列表中的"7-302-13906-7ch...

    ASP.NET 2.0功能源码

    11. **Ajax支持**:ASP.NET 2.0虽然没有内置Ajax框架,但可以通过UpdatePanel等组件实现部分页面更新。源码可能包含了使用Ajax技术来提高用户体验的代码。 通过研究这个"ASP.NET 2.0功能源码",开发者可以深入了解...

    ASP.NET2.0+sql server 网络应用开发详解

    在ASP.NET 2.0版本中,引入了许多新特性,如改进的页面生命周期管理、母版页(Master Pages)用于统一网站布局、自定义控件增强用户体验、配置管理工具简化部署过程、以及ASP.NET AJAX框架实现页面无刷新交互等。...

    ASP.NET 2.0网络编程自学手册

    对于想要进一步提升的读者,还会介绍ASP.NET 2.0的MVC模式,尽管它主要在ASP.NET MVC框架中得到广泛应用,但了解其原理对理解ASP.NET 2.0的Web Forms模式同样有益。 总之,《ASP.NET 2.0网络编程自学手册》将带领...

    ADO .NET2.0技术内幕

    在本文中,我们将深入探讨ADO.NET 2.0的关键组件、改进和应用场景。 1. **DataSet与DataTable** - `DataSet` 是ADO.NET的核心组件之一,它是一个内存中的数据集合,可以包含多个`DataTable`。它允许离线处理数据,...

    Asp.net 2.0 揭秘源码(完全版)part02

    随着Ajax的兴起,Asp.net 2.0引入了UpdatePanel和ScriptManager等组件,使得开发者可以轻松实现页面的部分更新,提升用户体验。 每个章节的源代码实例都是为了帮助读者更好地理解和应用这些概念和技术。通过实际...

    ASP.NET 2.0网站开发全程解析(C#)

    5. **配置和部署**:ASP.NET 2.0提供了一套强大的配置系统,使得开发者可以在不修改代码的情况下更改应用程序的设置。同时,部署工具和Web部署项目简化了应用程序的发布流程。 6. **AJAX支持**:ASP.NET 2.0引入了...

    ASP.NET2.0数据库高级编程

    3. **LINQ to SQL**:虽然LINQ(Language Integrated Query)是在.NET Framework 3.5中引入的,但该书可能也涵盖了如何在ASP.NET 2.0项目中使用预版本的LINQ。它允许开发者使用C#或VB.NET的查询语法直接与SQL数据库...

    ASP.NET 2.0快速入门教程(微软MSDN课程)

    ASP.NET 2.0 Web Part是构建可交互、可配置的Web部件的框架,使得用户可以在页面上自由定制和组合内容。这部分教程将解释如何创建和集成Web Part,以及如何通过Web Part Zones和连接器实现它们的互动。 网站的国际...

    圣殿祭司的ASP.NET 2.0开发详解

    1. **.NET Framework基础**:ASP.NET 2.0建立在.NET Framework 2.0之上,这意味着开发者可以利用C#、VB.NET或其他.NET支持的语言编写代码。.NET Framework提供了丰富的类库,简化了内存管理、异常处理和跨语言互操作...

    ASP.NET 2.0 XML高级编程

    通过学习《ASP.NET 2.0 XML高级编程》,开发者不仅可以深入了解XML在ASP.NET环境中的应用,还能提升开发高效、安全且可扩展的Web应用的能力。书中丰富的实例和实战指导将帮助读者将理论知识转化为实际开发中的技能。

    ASP.NET2.0数据库项目案例导航

    ASP.NET 2.0 是微软开发的一个用于构建Web应用程序的框架,它在.NET Framework 2.0版本中推出,提供了丰富的特性和工具,使得开发者能够更高效地构建动态网站、Web服务以及Web应用程序。本项目案例导航涵盖了多个...

    <ASP.NET 2.0 Web数据库开发教程>教学讲义PPT.rar

    虽然LINQ(Language Integrated Query)是在.NET Framework 3.5中引入的,但在ASP.NET 2.0项目中也可以使用。LINQ提供了一种在C#或VB.NET中直接书写数据库查询的语法,增强了代码的可读性和效率。 **6. 状态管理** ...

    精通ASP.NET 2.0+SQL Server 2005 项目开发

    在ASP.NET 2.0与SQL Server 2005的结合中,ADO.NET是关键的数据访问层。它提供了DataSet、DataTable、DataRow等对象,用于在内存中管理和操作数据,并通过Connection、Command、DataAdapter组件与数据库进行交互。...

Global site tag (gtag.js) - Google Analytics