2009-08-19 26 views
0

.net 2.0 WindowsフォームアプリケーションでWPFコントロールを読み込んでホストしようとしています。 WPFコントロールは、.net 3.5がインストールされている場合にのみロードする必要があります。.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

私は私が実際に.NET 2.0であることActiveXコンポーネントとロードでWPFをホストすることにより、この問題を解決することができると思います。私がこれまでに働くならば、より多くの情報が続くでしょう。 – 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にドロップし、表示するWPFフォームにChildプロパティを設定します。 .NET 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

Ok、申し訳ありません。分からなかった。 –

1

このようなトピックについてのあなたの最初のピットストップは、WPF Migration and Interoperabilityでなければなりません。特に、あなたにはWalkthrough: Hosting a Windows Presentation Foundation Control in Windows Formsがあります。

ElementHostが.NET Framework 3.0に導入されているにもかかわらず、このチュートリアルのWindowsフォームホストアプリケーションビルドは、実際に.NET Framework 2.0をターゲットとしています。

これらのアセンブリが存在しない場合にアプリケーションを保護する必要がある場合は、インダイレクションのレイヤーを導入し、.NET Framework 3.5を正常に検出した後に実行時にElementHostをロードする必要があります。


.NET Frameworkバージョンとサービスパックの検出:

関連する問題