2011-08-28 68 views
3

比方说有一个Person类拥有一些属性和一些其他类Address等。(我在这里只给类的例子{{类数据}})班级如何通知某人其数据已被更改?

这方面的一个实例反序列化,并在装UI。使用的可能会更改数据(名称,地址或其他)。

如果实例是ui中的数据源(在每个控件中),如何知道数据是否已更改以便在退出前通知用户保存?

回答

5

您应该实现INotifyPropertyChanged接口,它基本上暴露了Person应该在属性更改时引发的事件。

链接的文档给出了一个DemoCustomer类的示例,该类很可能很容易转换成您的Person类。

+0

@SLaks为我提供了这个链接,以便在编译时自动绑定通知程序。 http://visualstudiogallery.msdn.microsoft.com/bd351303-db8c-4771-9b22-5e51524fccd3 – mservidio

+0

这样,我将不得不在每个类中实现INotifyPropertyChanged,并且每个父类应该从其子级捕获事件并引发另一个INotifyPropertyChanged 。 这是我尝试的第一件事,但会使代码烦人。 – Odys

+0

@Odys:那么这基本上是......有合适的帮手,它不是非常难*,如果你愿意,你可以使用AOP,但需要额外的概念来理解。这是您需要更改通知所支付的价格。 –

3

为了避免每个类的每个属性的代码都有问题,你可以使用AOP框架之一。这是目前市场上最好的产品之一:PostSharp。还有一个免费版本,这是一个好消息。 (顺便留意许可,如果你要去使用它在你的工作)

在这里你可以真正找到一个例子,如何准确使用的NotifyPropertyChanged

http://www.sharpcrafters.com/solutions#ui

注入希望这会有所帮助..