2011-10-27 4 views
1

WP7.1 Mango의 작업 시작 프로그램을 Caliburn Micro의 최신 버전과 함께 사용하려고하는데 작업이 완료되면 코드가 다시 호출되지 않습니다. 아마도 나는 어딘가에서 어리석은 짓을하고 있을지 모르지만 어디서 볼 수는 없다. 여기에서 다운로드 할 수있는 내가 샘플 생식 응용 프로그램에 대한 않은 것입니다 :Caliburn Micro : 망고로 사진 찍기

http://www.filesonic.com/file/2750397005/PhoneTaskTest.zip

1) 새로운 WP7.1 응용 프로그램을 만들;

2) 솔루션에 Lib 폴더를 추가하고 거기에 CM dll을 추가 한 다음 참조를 추가합니다.

3) CM 문서에서 지정한대로 생성 된 파일을 변경하고 부트 스트 래퍼를 추가하십시오.

지금까지 모든 것이 정상이며 응용 프로그램이 아무 문제없이 시작됩니다. 그런 다음 사진을 찍으려면 다음을 수행하십시오.

4)보기의 기본 페이지에 버튼을 추가하고 해당 VM의 해당 메소드 (TakePhoto)를 추가하십시오. 다음

5)가 VM을 변경

a) 생성자 주입 판독 전용 IEventAggregator 부재를 추가;

b) 을 추가합니다. Aggregator가이 VM을 구독 및 구독 취소하도록 OnActivate/OnDeactivate 오버라이드를 추가합니다. 그냥

c) 상기 TakePhoto 방법을 추가

_aggregator.RequestTask<CameraCaptureTask>(); 

d)는 인터페이스 IHandle < TaskCompleted <CameraCaptureTask> >에서 VM을 도출하고 그것을 구현 :

public void Handle(TaskCompleted<CameraCaptureTask> message) 
{ 
    if (message.Result.TaskEventArgs.TaskResult != TaskResult.OK) return; 
    SetPhoto(message.Result.TaskEventArgs.ChosenPhoto); 
} 

이제 단추를 클릭하면 에뮬레이터에서 카메라 작업이 시작되고 사진을 찍을 수 있습니다. ; 그런 다음 응용 프로그램으로 돌아가지만 아무 일도 일어나지 않으며 내 Handle 메서드가 호출되지 않습니다. 이를 확인하기 위해 중단 점을 배치 할 수 있습니다. 그래서 내가 여기서 뭐하고있는거야?

답변

1

TaskCompleted<CameraCaptureTask> 대신 TaskCompleted<PhotoResult>을 처리해야합니다. Caliburn.Micro는 CameraCaptureTask의 경우에있는 작업의 Completed 이벤트의 이벤트 인수가 PhotoResultTaskCompleted<T> 메시지를 만들기 때문에 그래서 당신은 IHandle<TaskCompleted<PhotoResult>>를 구현해야하고 핸들 방법이

public void Handle(TaskCompleted<PhotoResult> message) 
{ 
    if (message.Result.TaskResult != TaskResult.OK) return; 
    SetPhoto(message.Result.ChosenPhoto); 
} 
+0

감사 같아야합니다, 나는 멍청한 짓 알고 있었다 :) ... 내 수치를 :) – Naftis

관련 문제