2012-05-01 1 views
3

Visual Studio의 결함으로 인해이 작업을 수행 할 수 없었습니다. 따라서이 상황을 시도하고 공유 할 수 있다면 정말 고맙겠습니다. 일어난다.C++ 다른 어셈블리에서 WPF 창을 양육하고 이벤트를 처리합니다.

가 나는 해결책이 개 프로젝트 설정을 가지고 : - CLI를해온 C++ 응용 프로그램을 사용 (.exe)을 - 일치하는 .cs 창 클래스와 내부 .xaml 양식을 가진 C의 #/WPF 클래스 라이브러리 (.dll)

내 C++ 응용 프로그램 내에서 WPF 창을 생성하려고하므로 해당 참조를 가져 와서 창의 인스턴스를 새로 만들고 새 응용 프로그램 컨텍스트에서 실행하십시오. 그게 잘 작동합니다.

이제는이 창에서 클래스를 만들고 C# 창에서 보호 된 함수에서 상속 된 여러 이벤트를 처리하려고합니다. C++ 어셈블리에서 .xaml 기반 윈도우의 .cs 클래스 인 public ref 클래스를 만듭니다. . 이것은 잘 컴파일됩니다.

예 :

public ref class myCPPWindow : myWPFWindow { ... }; 

그때 나는 C++ 조립보다는 C#을 어셈블리에있는 기본 클래스에있는 상위 클래스에 산란 창을 변경합니다. 이제 기본 클래스가 작동하더라도 C# 어셈블리에서 .xaml 창 소스를로드하지 못한다는 것을 요구하는 .xaml 창을로드하는 동안 기본 C# 클래스의 InitializeComponent() 부분에 오류가 발생합니다. 아무도 이것에 대한 설명/수정을 줄 수 있습니까?

+0

대답/조언을 계속 찾고 있습니다. – kvanberendonck

+0

myWPFWindow.xaml.cs를보고 어떤 리소스가로드되었고 어떻게 완료되었는지 확인하십시오. 어쩌면 이것이 당신을 도울 것입니다. –

+0

InitializeComponent()를 사용하여 정상적으로로드됩니다. 특별한 것은 없습니다. 부모 대신 자식 InitializeComponent 이동 시도하고 InitializeComponent() 내부 상대 URI 폼을 찾는 데 실패하지 않습니다. – kvanberendonck

답변

1

WPF에서 일반적인 [라이브러리; 사용자 정의 컨트롤] - [응용 프로그램; 파생 컨트롤] 문제가있는 것처럼 보였습니다. C++이 없어도이 코드를 재현했습니다. 설명을 듣지 않고도 일반적인 해결 방법은 "기본"클래스를 집계하거나 기본 클래스를 다시 사용자 정의 컨트롤 대신 템플릿 컨트롤 (예 : .xaml 파일없이)으로 재구성하는 것입니다. 내가 올바르게 이해하면 귀하의 질문은 The component does not have a resource identified by the uri 질문과 동일합니다.

+0

확실하지 않지만 질문 사이의 연결을 나타낼 가능성이 있다면 도움이 될 것입니다. – mikalai

관련 문제