代码之家  ›  专栏  ›  技术社区  ›  CodingBarfield

在.net 2.0应用程序中加载.net 3.5 wpf表单

  •  1
  • CodingBarfield  · 技术社区  · 16 年前

    我找到了一个链接 Hosting WPF Content in an MFC Application

    Hosting WPF Content in a Java Application 这又是一样的,但我不知道从哪里开始在.net中编写代码。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    关于此类主题的第一站应该是WPF Migration and Interoperability .特别是你会发现 Walkthrough: Hosting a Windows Presentation Foundation Control in Windows Forms 让你开始。

    ElementHost 已引入。NET框架3.0。

    如果你需要保护你的应用程序免受这些程序集缺失的影响,你必须引入一层间接层,并且只加载 ElementHost 在成功检测后的运行时。NET Framework 3.5,有关后者的提示,请参阅下文。


    .NET Framework版本和service pack检测:

        2
  •  1
  •   Daniel Enetoft    16 年前

    要在Win32窗体中承载WPF控件,您需要使用ElementHost控件。将此控件拖放到窗口上,并将其Child属性设置为要显示的WPF窗体。

    看看是否。无论是否安装了Net 3.5,您都可以尝试加载仅存在于3.5中的程序集

    例如,以下是一种确定是否安装了Net 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;
            }
    

    /丹尼尔

        3
  •  1
  •   CodingBarfield    16 年前

    我使用以下代码在.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)