2009-11-11 3 views
1

우리는 다양한 페이지로 이동하는 프레임이있는 마법사 형 WPF 응용 프로그램을 개발합니다. 별도의 xaml 및 xaml.cs 파일에서 각 페이지를 정의한 다음 응용 프로그램에서 프레임간에 페이지를 탐색하게합니다.WPF 페이지를 만드는 방법은 공통 인터페이스가 있습니다.

내 페이지는 모두 현재 페이지에서 상속됩니다. 모든 페이지에 공통된 인터페이스가있어서 다형성으로 액세스 할 수 있습니다. 그러나 Visual Studio에서 xaml 파일로 자동 생성 된 파일은 기본 클래스를 Page로 설정하므로 페이지의 기본 클래스를 변경하면 컴파일이 실패합니다. 부분 선언에서 다른 기본 클래스를 지정하면 안된다는 오류가 발생합니다.

하나의 옵션은 다른 인터페이스 (예 : WizardPage)를 추가하고 모든 클래스가 해당 인터페이스를 구현하도록하지만, 각 페이지가 모든 intefaces 함수를 구현해야한다는 것을 의미합니다. 대부분의 함수가 필요하기 때문에 불편합니다. 대부분의 페이지에서 기본 빈 구현을 갖습니다.

이 문제를 해결하는 데 사용할 수있는 다른 방법을 제안 해 주실 수 있습니까?

Thasnks
splintor 것은

답변

3

xaml의 루트 태그를 사용자가 정의한 클래스로 만들 수 있습니다. 여기에서 Page 클래스에서 기본 클래스를 파생시킨 다음 기본 클래스에서 페이지 클래스를 파생시킬 수 있습니다.

public partial class MyDeriveClass : MyBaseClass 
{ 
    ............. 
} 

하고 XAML에서

<y:MyBaseClass y="add your Namesapace here" and add other attribute of Page also like default namespace and xmlns:x> 
    ............... 
</y:MyBaseClass> 
+0

감사합니다. 이것은 제가 찾고 있던 것입니다. 또한 http://www.nivisec.com/2008/07/handling-xaml-ui-base-classes.html에서 설명한 것과 동일한 문제가 발견되었습니다. 그가 연결 한 게시물은 사용할 수 없었지만 Google 캐시를 사용하여 내가해야 할 일을 이해했습니다. 감사. – splintor

0

이 페이지를 확장하고 WizardPage 방법의 빈 구현을 제공 WizardPage를 구현 어댑터 페이지의 종류를 확인합니다. 그런 다음 다른 페이지를 WizardPage로 확장하십시오.

+0

쓰기하지만 내가 말했듯이, 나는 내 페이지가 페이지에 대한 상속이 있어야합니다

public class MyBaseClass : Page { ..... } 

이 같은 클래스에서 귀하의 페이지 클래스를 유도 할 수있다 그렇지 않으면 자동으로 생성 된 파일에서 기본 클래스와 호환되지 않으므로 컴파일이 중단됩니다. – splintor

+1

페이지에서 상속하는 클래스를 상속하면 어떻게되는지 알 수 없습니다. – scubabbl

+0

@ splintor, Anurag의 해결책을보십시오. 올바른 기본 클래스를 생성하려면 xaml 파일을 편집해야합니다. –

관련 문제