2009-08-19 5 views
0

.net 2.0 Windows Forms 응용 프로그램에서 WPF 컨트롤을로드하고 호스팅하려고합니다. .net 3.5가 설치된 경우에만 WPF 컨트롤을로드해야합니다..net 3.5. wpf-forms .net 2.0 응용 프로그램에서

Hosting WPF Content in an MFC Application에 대한 링크를 찾았습니다. 그게 내가하려고하는 것이지만, C++ 지식이 충분하지 않아서 .net으로 번역 할 수 없습니다.

어쨌든 여기에 또 다른 링크가 있습니다 : Hosting WPF Content in a Java Application 그 사람은 똑같은 말을 반복합니다. 그러나 .net에서 그 코드를 작성하는 곳을 알지 못합니다.

+0

저는 실제로이 문제를 activeX 구성 요소에서 wpf를 호스팅하고 .net 2.0에서로드하여 해결할 수 있다고 생각합니다. 내가 작동하게되면 더 많은 정보가 따라옵니다. – CodingBarfield

+0

.Net com 노출 된 DLL을 만들고 regasm을 사용하여 .tlb 파일을 만든 후에 Visual Studio에서 해당 파일을 참조 할 수 없습니다. 나는 나에게 'com 오브젝트를 추가 할 수 없다.'라는 경고를 주며, 이것이 내 이론을 거의 닫을 수 있도록한다. 누구나이 일을하는 방법을 알 수 있습니까? – CodingBarfield

답변

1

다음 코드를 사용하여 .net 2.0 windows 폼 호스트에서 3.5 wpf 컨트롤을 포함하는 dll을로드했습니다. 로드 된 컨트롤에는 ElementHost 객체가 포함됩니다.

Dim dllPath As String = "C:\ProjectsTest\TestSolution\ActiveXUser\bin\Debug\TestControl.dll" 
If Not File.Exists(dllPath) Then 
Return 
End If 

Dim versionInformation As String 
versionInformation = Environment.Version.Major.ToString + Environment.Version.Minor 

Dim loadedAssembly As [Assembly] = [Assembly].LoadFile(dllPath) 

Dim mytypes As Type() = loadedAssembly.GetTypes() 

Dim t As Type = mytypes(1) 
Dim obj As [Object] = Activator.CreateInstance(t) 

versionInformation = Environment.Version.Major.ToString + Environment.Version.Minor 
Me.Panel1.Controls.Add(obj) 
1

Win32 폼에서 WPF 컨트롤을 호스팅하려면 ElementHost 컨트롤을 사용해야합니다. 이 컨트롤을 Window에 놓고 Child 속성을 표시 할 WPF 폼으로 설정합니다. 닷넷 3.5이 설치되어있는 경우

확인하려면 여부 만 예를 들어 3.5

에 존재하는 어셈블리를로드 할 수 있습니다, 여기에 인터넷 3.5 SP1을 설치하거나되지 않은 경우 알아 내기위한 방법이다 이 같은


     private static bool IsDotNet35Sp1Installed() 
     { 
      try 
      { 
       Assembly.ReflectionOnlyLoad(
        "System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"); 
      } 
      catch (FileNotFoundException) 
      { 
       return false; 
      } 
      return true; 
     } 

/다니엘

+0

.Net 2.0에서는 작동하지 않습니다. elementhost 객체가 .Net 3.0에 도입되었고 기본 응용 프로그램이 .Net 2.0에 대해 빌드되어야합니다. – CodingBarfield

+0

자, 죄송합니다. 그것을 얻지 못했습니다. –

1

첫 번째 정지에 관한 주제는 WPF Migration and Interoperability해야한다. 특히 당신은 Walkthrough: Hosting a Windows Presentation Foundation Control in Windows Forms을 찾을 수 있습니다.

ElementHost이 .NET Framework 3.0에 도입되었지만 원하는대로이 연습에서 Windows Forms 호스트 응용 프로그램 빌드는 실제로 .NET Framework 2.0을 대상으로합니다.

이러한 어셈블리가없는 상황에서 응용 프로그램을 보호해야하는 경우 간접적 인 계층을 도입하고 .NET Framework 3.5를 성공적으로 검색 한 후 런타임에 ElementHost 만로드해야합니다. 자세한 내용은 힌트를 참조하십시오.


.NET Framework 버전 및 서비스 팩 감지 :

관련 문제