Binding自动侦听

WPF的强大之一就是数据绑定,Binding是数据桥梁,它的两端是分别是源(Source)和目标(Target),一个简单的类的属性值发生变化,会自动反映在UI界面上,这个属性就是Binding的Path路径,那么如何自动反映在UI界面上的呢?其实就是数据源要实现INotifyPropertyChanged接口,其属性的set语句中实现一个PropertyChanged事件,当为Binding设置数据源后,Binding就会自动侦听来自这个接口的PropertyChanged事件

看看下面例子,类Stuent实现接口,Name属性set中添加事件,这样此Name变化会反映到UI界面上

  class Student : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private string name;

        public string Name
        {
            get { return name; }
            set { name = value;
                if (this.PropertyChanged != null)
                    this.PropertyChanged(this, new PropertyChangedEventArgs("Name"));
            }
        }
    }

用代码在后台绑定到UI界面上的textBox文件框上,如下

textBox.SetBinding(TextBox.TextProperty,new Binding("Name"){Source=stu=new Student()});

或在控件上直接写绑定:

   <TextBox x:Name="textBox" Text="{Binding Name}" />

在初始化窗口中添加数据源:

 public MainWindow()
        {
            InitializeComponent();
            student = new Student()
            {
                Name = "张三"
            };

            this.textBox.DataContext = student;
         }
        Student student;

在项目中,可以PropertyChanged事件可以提取成基类,使用代码简洁一些

 class NotifyObject : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public void RaisePropertyChanged(string name)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }

在属性中就可以这样写:

class Student : NotifyObject
    {

        private string name;

        public string Name
        {
            get { return name; }
            set { name = value;
                RaisePropertyChanged("Name");
            }
        }
    }
时间: 2024-12-19 23:35:59

Binding自动侦听的相关文章

SQL Server 2012 AlwaysOn高可用配置之九:添加侦听器

9.   添加侦听器 9.1 点击"添加侦听器" 9.2 输入侦听器名称和端口,点击"添加" 9.3 输入侦听器IP,点击"确定" 9.4 点击"确定" 9.5 成功创建完成侦听器后如下" 9.6 在AD中自动生成相应的对象 9.7 在DNS自动生成相应的DNS记录 SQL Server 2012 AlwaysOn高可用配置篇成功完结 -----------------------------------------

wcf 由 http 更改为 https 返回404,没有终结点在侦听可以接受消息的

首先wcf项目在使用http时是没问题的. WCF有http更改为https之后,返回 没有终结点在侦听可以接受消息 需要修改wcf服务端及客户端 服务端更改代码 <binding maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" > <security mode="Transport"> <transport clientCrede

浅析cocos2d-x 2.x到3.x事件侦听设计变化原因之一

DionysosLai 2015/2/28 对于事件侦听的设计,cocos2d-x从2.x到3.x发生了根本性的变化,一直以来对此,只是单纯的使用考虑如何构建自己的游戏代码,并未对其二者设计孰优孰劣进行探究.只是前段时间在做一个新游戏时,关于2.x的触摸事件发现了一个设计不人性化问题,本想向cocos2dx官网反应,但测试3.x时,并未发现这个问题.对此,本文细述这个问题,分析二者设计的不同,同时希望抛砖引玉. 简单阐述2.x与3.x的事件侦听不同点: 在2.x中,需要注册一个事件侦听. 在3.

没有终结点在侦听可以接受消息的 XXXXXX 这通常是由于不正确的地址或者 SOAP 操作导致的

问题: 没有终结点在侦听可以接受消息的 http://192.168.1.176:50001/SomPatientsService.asmx.这通常是由于不正确的地址或者 SOAP 操作导致的.如果存在此情况,请参见 InnerException 以了解详细信息. --------------------------- 異常 --------------------------- メッセージを受信できる http://192.168.1.176:50001/SomPatientsService.

侦听对象 watch

处理依赖,Vue还提供了另外一种处理依赖的方法:侦听对象.再computed属性里面,我们设置需要计算的属性,而在函数里面设置计算这个属性的逻辑,侦听属性采用的则是另外一种机制,把想要侦听的属性名称设置为键,这里就是counter这个键,必须与属性名称相同,这里就是data属性中的counter属性,在函数中指定counter属性变化时需要执行的代码,Vue会自动把属性变化之后的数值传递给该函数,以允许我们对属性变化做出反应,所以这里我也可以通过设置一个全局输出变量来实现,有时可能确实得这样,比

没有终结点在侦听可以接受消息的 http://erp-test/5.0/U9WorkflowService。这通常是由于不正确的

描述:启用工作流的单据,提交时提示,没有终结点在侦听可以接受消息的 http://erp-test/5.0/U9WorkflowService.这通常是由于不正确的地址或者 SOAP 操作导致的.如果存在此情况,请参见 InnerException 以了解详细信息. 解决:因服务器 的 U9Mailservice_5.0和U9NotificationService_5.0未启动,启动即可.

Android Listener侦听的N种写法

Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法. OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用,其接口定义如下: [java] view plaincopyprint? public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that was cli

[Mark]Tomcat/IIS 更改 HTTP 侦听端口

目的: IIS HTTP 侦听端口改为 8088 Tomcat HTTP 侦听端口改为 80 环境: Windows Server 2012 R2 IIS8.5 (默认端口是 80) Tomcat8.0 (默认端口是 8080) SQL Server 2014 预想: 关掉IIS服务,修改HTTP协议的侦听端口,重启IIS 修改Tomocat HTTP协议的侦听端口,重启Tomcat BUT that's too easy... 按上面预想的步骤简单操作后,直接 http://localhost

Android开发之bindService()侦听service内部状态

在Android开发之bindService()通信的基础上,实现bindService()方法侦听service内部状态. 实现侦听service内部状态,使用的是回调机制 1.首先实现一个接口 1 public static interface CallBack{ 2 void onDataChange(String data); 3 } 2. 1 private CallBack callBack=null; 2 public void setCallBack(CallBack callB