2011-08-28 2 views
3

Address 등 일부 속성과 다른 클래스를 보유하고 Person 클래스가 말할 수 있습니다 (난 그냥 클래스의 예를 제공하고이 {클래스 {데이터}})이의 인스턴스가 직렬화와에로드클래스는 데이터가 변경되었음을 누군가에게 어떻게 알릴 수 있습니까?

너. 사용하면 데이터 (이름, 주소 등)가 변경 될 수 있습니다.

인스턴스가 ui (모든 컨트롤에서)의 데이터 소스 인 경우 종료하기 전에 저장하도록 사용자에게 알리기 위해 데이터가 변경되었는지 어떻게 알 수 있습니까?

답변

5

기본적으로 속성이 변경 될 때 Person이 발생시키는 이벤트를 표시하는 INotifyPropertyChanged 인터페이스를 구현해야합니다.

링크 된 문서는 Person 클래스로 쉽게 변환 될 가능성이있는 DemoCustomer 클래스의 예를 제공합니다.

+0

@SLaks는 컴파일 타임에 자동으로 알리미를 연결하는이 링크를 제공합니다. http://visualstudiogallery.msdn.microsoft.com/bd351303-db8c-4771-9b22-5e51524fccd3 – mservidio

+0

이렇게하면 모든 클래스에서 INotifyPropertyChanged를 구현해야하며 각 부모 클래스는 해당 자식에서 이벤트를 catch하고 다른 INotifyPropertyChanged를 발생시켜야합니다. . 이것이 내가 시도한 첫 번째 코드이지만 성가신 코드가 될 것입니다. – Odys

+0

@Odys : 음, 기본적으로 적절한 헬퍼가 있습니다. 끔찍한 일이 아니며, 원할 경우 AOP를 사용할 수 있습니다. 이해해야 할 추가 개념이 필요합니다. 변경 통보가 필요할 때 지불하는 가격입니다. –

3

수행 한 모든 클래스의 모든 속성에 대한 코드를 피하려면 AOP 프레임 워크 중 하나를 사용할 수 있습니다. 이 제품은 현재 시중에서 판매되는 최고의 제품 중 하나입니다 : PostSharp. 무료 버전도 있습니다. 좋은 소식입니다. 여기

당신이 실제로 어떻게 NotifyPropertyChanged

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

의 주입을 정확하게 사용하는 예를 찾을 수 있습니다 (그런데 당신의 일에 당신이있어 경우에, 라이선스에 거 사용을 눈을 떼지) 이것이 도움이 되었기를 바랍니다.

관련 문제