闲话WPF之十五(WPF的数据处理 [2])

上一个Post当中,我叙述了WPF中的数据绑定相关的一堆理论知识。现在,我们将对其中的某些方面通过实例做进一步的分析。

在介绍WPF数据绑定源的种类时,第一种就是任意的CLR对象。这里需要注意的是WPF虽然支持任意的CLR对象,但是一个普通的CLR对象类却不行。我们还需要在CLR对象类上实现一种变化通知机制。

WPF把这种通知机制封装在了INotifyPropertyChanged接口当中。我们的CLR对象类只要实现了这个接口,它就具有了通知客户的能力,通常是在属性改变后通知绑定的目标。

下面是一个简单的例子,实现了一个支持通知功能的Camera类:

using System;

using System.ComponentModel;

using System.Windows.Media.Media3D;

namespace LYLTEST

{

    public class Camera : INotifyPropertyChanged

    {

        private PerspectiveCamera m_Camera;

        public event PropertyChangedEventHandler PropertyChanged;

        public Camera()

        {

            m_Camera = new PerspectiveCamera();           

        }

        private void NotifyPropertyChanged(String info)

        {

           if (PropertyChanged != null)

            {

                PropertyChanged(this, new PropertyChangedEventArgs(info));

            }

        }

         public PerspectiveCamera CameraProp

        {

            get { return m_Camera; }

            set

            {

                if (value != m_Camera)

                {

                    this.m_Camera = value;

                    NotifyPropertyChanged("CameraProp");

                }

            }

        }

    }

}

这一段代码很简单,首先引入类中使用的INotifyPropertyChangedPerspectiveCamera需要的名字空间。这里与普通CLR类的区别在于首先有一个公有的PropertyChangedEventHandler事件类型。然后我们在.NET属性包装CameraProp判断属性是否发生了变化,如果是,则用当前是属性名称字符串“CameraProp”调用另一个私有函数NotifyPropertyChanged。由它根据属性的名称构造一个PropertyChangedEventArgs对象,并完成对PropertyChanged的调用。它才是属性变化时真正应该调用的一个通知事件。

最后一点,如果我们需要通知所以的属性都发生了变化,则将上面的属性字符串“CameraProp”用参数NULL替代即可。
posted @ 2006-12-29 10:14 Yiling Lai 阅读(2680) 评论(11)  编辑 收藏 所属分类: WPF

  回复  引用  查看    
#1楼 2006-12-29 11:50 | Kiven      
我这里有个问题能否帮我解决一下:基于FrameWork3.0平台的开发中,可以创建一个WEBApplication(WPF),每次我与数据库建立连接的时候它总是不成功而报错。但在WindwsApplication(WPF)却没有任何问题,同样的数据库访问代码,对数据库访问的权限都给了。就是不成功,请赐教!
  回复  引用  查看    
#2楼 [楼主]2006-12-29 12:08 | Yiling Lai      
@Kiven

你可以从XBAP程序的安全性上考虑一下,这两张应用程序的主要区别在于信任的级别上。看看SDK中的Windows Presentation Foundation Partial Trust Security
  回复  引用  查看    
#3楼 [楼主]2006-12-29 12:13 | Yiling Lai      
@kiven

很抱歉,关于你的部署问题,现在只能看看SDK的Deploy的内容,我这里有几个相关的主题,但都是国外地址,无法访问啊!该死的地震......
  回复  引用  查看    
#4楼 2006-12-29 14:28 | Kiven      
谢谢,这是我的MSN:aztwo3@hotmail.com,加我吧,共同探讨。
  回复  引用  查看    
#5楼 [楼主]2006-12-29 14:52 | Yiling Lai      
@Kiven

等MSN可以登录了,我再加:-)
  回复  引用  查看    
#6楼 2006-12-30 17:48 | stswordman      
@ Yiling Lai

可以给我发一份 Yiling Lai 《WPF Unleashed》的试读章节吗
我上不了Amazon,也不知道哪里有下载...

谢谢,我的邮箱是stswordman@hotmail.com

  回复  引用  查看    
#7楼 [楼主]2006-12-30 18:27 | Yiling Lai      
◎stswordman

这本书我前面介绍过:
http://www.cnblogs.com/YilingLai/archive/2006/12/19/596696.aspx,里面有下载地址!
  回复  引用  查看    
#8楼 2006-12-30 21:16 | stswordman      
谢谢
  回复  引用  查看    
#9楼 [楼主]2006-12-30 22:17 | Yiling Lai      
@stswordman

不客气

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: