闲话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 赖仪灵 阅读(3160) 评论(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      
  回复  引用  查看    
#8楼2006-12-30 21:16 | stswordman      
谢谢
  回复  引用  查看    
#9楼[楼主]2006-12-30 22:17 | Yiling Lai      
@stswordman

不客气




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 606736




相关文章:

相关链接: