2012-08-13 2 views
0

Silverlight 웹 사이트에 대한 사용자 지정 컨트롤을 설계했습니다. 디버거를 실행하거나 HTTP를 통해 풀다운하면 컨트롤이 완벽하게 작동합니다. 컨트롤 자체에 대한 디자이너보기에서는 잘 표시됩니다.WCF를 사용하는 사용자 지정 컨트롤이 VS2010 디자이너보기

컨트롤을 MainPage.xaml 앱에 컨트롤을 추가 할 때 문제가 발생합니다. 디자이너가 말하며 : 처리되지 않은 예외가 발생했습니다. System.NullReferenceException 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

컨트롤은 Loaded() 이벤트를 실행하는 동안 WCF 서비스에서 해당 데이터를 가져옵니다. WCF 서비스는 로컬 호스트가 아닌 원격 IIS 서버에 있습니다.

디자이너보기에서 서비스의 데이터를 가져올 수 없기 때문에 컨트롤이 손상되었다고 생각합니다. 이 문제를 해결할 방법이 있습니까? 미리 감사드립니다.

답변

1

@Luke가 말한 것과는 별도로,로드 문제가 발생했을 때 데이터로드 코드가 문제의 핵심을 실제로 수정해야합니다. 어쩌면 그냥 정상적으로 오류를 처리하고 오류를 캐치하고 빈 데이터를 반환할까요? 일반적으로 충돌을 표시하는 것보다 아무것도 표시하지 않는 (또는 메시지를 표시하는) 것이 더 좋습니다. 현재 연결이 실제 릴리스 모드에서도 충돌합니다 (즉, 데이터 연결이 실패한 경우).

IsInDesignTool 속성은 매우 유용합니다. 일단 데이터를로드하지 못하면 빈 데이터 집합을 반환하기 전에 IsInDesignTool이 true인지 확인하십시오 (Luke가 말한 것처럼). 그렇다면 하드 코딩 된 예제 집합을 반환하십시오. 개의 데이터입니다. 이렇게하면 컨투어를로드 할 수 없으며 VisualStudio 또는 블렌드를 감지하면 일부 테스트 데이터가 표시되고 디자인보기에서 내용으로 채워진 것으로 표시됩니다.

+0

통찰력을 가져 주셔서 감사합니다. 내가 이것을 더 우아하게 다루어야한다는 아주 좋은 점. 간단한 앱이므로 출시 즉시로드 할 수없는 가능성은 희박하지만 그럼에도 불구하고 다루어야합니다. –

1

DesignerProperties.IsInDesignTool 속성을 사용할 수 있습니다. 코드가 VS 디자이너 또는 Expression Blend와 같은 디자이너 도구에서 실행 중이면이 속성의 값은 true이고 그렇지 않은 경우 false입니다.

Loaded 이벤트 처리기에서이 속성 값을 읽을 수 있으며이 속성 값이 false 인 경우에만 WCF 서비스를 호출 할 수 있습니다.

관련 문제