2011-08-28 65 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

注入希望這會有所幫助..

相關問題