다음을 통해 공유


변경 내용에 응답 및 전파

요소를 만들거나 삭제하거나 업데이트할 때 변경 사항을 모델의 다른 부분이나 파일, 데이터베이스 또는 기타 구성 요소와 같은 외부 리소스에 전파하는 코드를 작성할 수 있습니다.

참조

다음 순서를 참고하여 이러한 방법을 살펴보세요.

기법 시나리오 자세한 정보
계산된 도메인 속성을 정의합니다. 값이 모델의 다른 속성에서 계산되는 도메인 속성입니다. 관련 요소의 가격 합계인 가격을 예로 들 수 있습니다. 계산된 스토리지 속성 및 사용자 지정 스토리지 속성
사용자 지정 스토리지 도메인 속성을 정의합니다. 모델의 다른 부분이나 외부에 저장된 도메인 속성입니다. 예를 들어 식 문자열을 모델의 트리로 구문 분석할 수 있습니다. 계산된 스토리지 속성 및 사용자 지정 스토리지 속성
OnValueChanging 및 OnDeleting과 같은 변경 처리기 재정의 다른 요소를 동기화 상태로 유지하고 외부 값을 모델과 동기화된 상태로 유지합니다.

값을 정의된 범위로 제한합니다.

속성 값 및 기타 변경 내용 바로 앞과 뒤에 호출됩니다. 예외를 throw하여 변경을 종료할 수 있습니다.
도메인 속성 값 변경 처리기
규칙 변경이 발생한 트랜잭션이 종료되기 직전에 실행 대기 중인 규칙을 정의할 수 있습니다. 실행 취소 또는 다시 실행에서는 실행되지 않습니다. 이를 사용하여 저장소의 한 부분을 다른 부분과 동기화 상태로 유지합니다. 규칙으로 모델 내부의 변경 내용 전파
이벤트 저장 모델링 저장소는 요소 또는 링크 추가 또는 삭제 또는 속성 값 변경과 같은 이벤트에 대한 알림을 제공합니다. 실행 취소 및 다시 실행에서도 이벤트가 실행됩니다. 저장소 이벤트를 사용하여 저장소에 없는 값을 업데이트합니다. 이벤트 처리기로 모델 외부의 변경 내용 전파
.NET 이벤트 도형에는 마우스 클릭 및 기타 제스처에 응답하는 이벤트 처리기가 있습니다. 각 개체에 이러한 이벤트를 등록해야 합니다. 등록은 일반적으로 InitializeInstanceResources를 재정의함으로써 수행되며 각 요소에 대해 수행해야 합니다.

이러한 이벤트는 일반적으로 트랜잭션 외부에서 발생합니다.
방법: 모양 또는 데코레이터 클릭 가로채기
경계 규칙 경계 규칙은 특히 도형의 경계를 제한하는 데 사용됩니다. BoundsRules로 모양 위치 및 크기 제한
선택 규칙 선택 규칙은 특히 사용자가 선택할 수 있는 항목을 제한합니다. 방법: 현재 선택 항목 액세스 및 제약
OnAssocatedPropertyChanged 그림자, 화살촉, 색, 선 너비, 스타일과 같은 도형 및 연결선의 기능을 사용하여 모델 요소의 상태를 나타냅니다. 모양 및 연결선을 업데이트하여 모델 반영

규칙 비교 및 이벤트 저장

변경 알림, 규칙 및 이벤트는 모델에서 변경이 발생할 때 실행됩니다.

규칙은 일반적으로 변경이 발생한 종료 트랜잭션에 적용되며 트랜잭션의 변경 내용이 커밋된 후에 이벤트가 적용됩니다.

저장소 이벤트를 사용하여 저장소 외부의 개체와 모델을 동기화하고, 규칙을 사용하여 저장소 내 일관성을 유지합니다.

  • 사용자 지정 규칙 만들기 추상 규칙에서 파생 클래스로 사용자 지정 규칙을 만듭니다. 또한 사용자 지정 규칙에 대해 프레임워크에 알려야 합니다. 자세한 내용은 규칙으로 모델 내에서 변경 내용 전파를 참조하세요.

  • 이벤트 구독 이벤트를 구독하려면 이벤트 처리기 및 대리자를 만듭니다. 그런 다음 EventManagerDirectory 속성을 사용하여 이벤트를 구독합니다. 자세한 내용은 이벤트 처리기로 모델 외부의 변경 내용 전파를 참조하세요.

  • 변경 내용 실행 취소 트랜잭션을 실행 취소하면 이벤트가 발생하지만 규칙이 적용되지 않습니다. 규칙이 값을 변경하고 해당 변경 내용을 실행 취소하면 실행 취소 작업 중에 값이 원래 값으로 다시 설정됩니다. 이벤트가 발생하면 수동으로 값을 원래 값으로 다시 변경해야 합니다. 트랜잭션 및 실행 취소에 대한 자세한 내용은방법: 트랜잭션을 사용하여 모델 업데이트를 참조하세요.

  • 규칙 및 이벤트에 이벤트 인수 전달 이벤트와 규칙 모두에 모델이 변경된 방법에 대한 정보가 있는 EventArgs 매개 변수가 전달됩니다.