다음을 통해 공유


편집 범위 사용

UsingEditingScope 샘플은 단일 원자 단위에서 실행 취소할 수 있도록 변경 내용 집합을 일괄 처리하는 방법을 보여 줍니다. 기본적으로 활동 디자이너 작성자가 수행한 작업은 실행 취소/다시 실행 시스템에 자동으로 통합됩니다.

입증합니다

편집 범위, 실행 취소 및 다시 실행

토론

이 샘플에서는 단일 작업 단위 내에서 트리에 대한 변경 내용 집합을 일괄 처리하는 ModelItem 방법을 보여 줍니다. WPF 디자이너에서 ModelItem 값을 직접 바인딩할 경우, 변경 사항이 자동으로 적용됩니다. 이 샘플에서는 일괄 처리할 여러 변경 내용이 단일 변경이 아닌 명령적 코드를 통해 수행될 때 수행해야 하는 작업을 보여 줍니다.

이 샘플에서는 세 가지 활동이 추가됩니다. 편집이 시작되면 BeginEdit이(가) ModelItem 인스턴스에서 호출됩니다. 이 편집 범위 내의 트리에 ModelItem 대한 변경 내용은 일괄 처리됩니다. 이 명령은 이 BeginEdit 인스턴스를 EditingScope제어하는 데 사용할 수 있는 값을 반환합니다. OnComplete 또는 OnRevert 중 하나를 호출하여 편집 범위를 커밋하거나 되돌릴 수 있습니다.

개체를 중첩 EditingScope 할 수도 있습니다. 이렇게 하면 여러 변경 내용 집합을 더 큰 편집 범위의 일부로 추적할 수 있으며 개별적으로 제어할 수 있습니다. 이 기능을 사용할 수 있는 시나리오는 모든 변경 내용을 단일 원자성 작업으로 처리하면서 여러 대화 상자의 변경 내용을 개별적으로 커밋하거나 되돌려야 하는 경우입니다. 이 샘플에서는 형식 ObservableCollection<T>ModelEditingScope을(를) 사용하여 편집 범위가 누적됩니다. 디자이너 화면에서 중첩의 깊이를 관찰할 수 있도록 ObservableCollection<T>가 사용됩니다.

샘플을 설정, 빌드 및 실행하려면

  1. 샘플을 빌드하고 실행한 다음 왼쪽의 단추를 사용하여 워크플로를 수정합니다.

  2. 편집 범위 열기를 클릭합니다.

    1. 이 명령은 편집 범위를 만들고 편집 스택에 푸시하는 호출 BeginEdit 입니다.

    2. 그런 다음 세 가지 활동이 선택한 작업에 추가됩니다 ModelItem. 편집 범위가 열리지 않았더라면 디자이너 캔버스에는 세 개의 새로운 활동이 나타나게 됩니다. 이 작업이 EditingScope 내에서 여전히 보류 중이기 때문에 디자이너가 아직 업데이트되지 않았습니다.

  3. 편집 범위 닫기를 눌러 편집 범위를 커밋합니다. 디자이너에 세 가지 활동이 표시됩니다.