2012-09-30 6 views
0

WPF 명령에 대한 모든 내용을 읽었으며 GoF 명령 패턴을 이해하고 있습니다. 프로세스에 관한 한 가지 질문이 있습니다. 명령 대상 (예 : 텍스트 상자)이 명령 소스 예를 들어, 버튼이 상태 (예 : 텍스트 상자에 삽입 된 일부 텍스트)를 변경하여 소스가 자체를 비활성화하거나 활성화 할 수있게하거나 원하는 것을 수행 할 수있게합니다. 다른 방법으로는 명령 대상이 ICommand 구현 클래스 (예 : cut 명령)가 CanExecuteChangedEvent를 트리거하도록하여 클래스가 명령 소스가 상태 변경을 알 수있게합니다.명령 소스 비활성화 및 활성화

답변

1

실행 논리를 돌리는 CommandManager 클래스가 있습니다. CommandManager.InvalidateRequerySuggested 메서드를 호출하여 시스템에서 CanExecute 메서드를 확인할 수 있도록합니다.

+0

내가 틀렸다면 수정하십시오. 그래서 텍스트 상자와 같은 컨트롤이 상태를 변경하면 CommandManager는 이것에 대해 알고 타겟의 명령 바인딩을 사용하여 해당 상태 변경의 소스를 알립니다. 이 프로세스를 자세히 설명하는 기사 나 블로그를 알고 있다면 감사 할 것입니다. –

+0

죄송합니다, 정말 이것에 관해 괜찮은 기사를 모릅니다. MVVM lib 중 하나를 사용하거나 각각의 개별 프로젝트에 대해 내 자신을 만듭니다. 그리고 그 libs (대부분)는 CommandManager에 직접 등록하여 이벤트를 명시 적으로 트리거하는 것이 좋습니다. 또는 CommandManager를 사용하지 않고 내부적으로 CanExecuteChanged를 트리거합니다. – zahir

관련 문제