在WindowsForm APP中打开WPF窗口

Mic*_*hel 8 c# wpf winforms

我在WindowsForm应用程序中添加了一个名为novoLogin的新WPF窗口.

添加后,我添加了system.xaml参考....调试正常.

现在我试图从现有的windowsForm中打开这个新窗口.

novoLogin nl = new novoLogin();
nl.show();
Run Code Online (Sandbox Code Playgroud)

编译器给出了这个错误:

错误1'WindowsFormsApplication1.novoLogin'不包含'show'的定义,并且没有扩展方法'show'可以找到接受类型'WindowsFormsApplication1.novoLogin'的第一个参数(你是否缺少using指令或程序集引用?)

Abb*_*bas 26

这篇简短的文章解释了如何实现这一目标.

如果你发现自己需要从WinForms程序打开一个WPF窗口,这是一种方法(对我有用):

  1. 创建/添加类型的新项目 WPF Custom Control Library
  2. 添加新的类型的项目 Window (WPF)
  3. 用WPF窗口做你的事
  4. 从您的WinForms应用程序,创建并打开WPF窗口

    using System;  
    using System.Windows.Forms;  
    using System.Windows.Forms.Integration;  
    
    var wpfwindow = new WPFWindow.Window1(); 
    ElementHost.EnableModelessKeyboardInterop(wpfwindow); 
    wpfwindow.Show();
    
    Run Code Online (Sandbox Code Playgroud)


And*_*eli 5

看看这个:http://www.mobilemotion.eu/?p = 1537&lang = en

摘要:

在任何文本编辑器中打开项目的清单文件(扩展名为.csproj或扩展名为.vbproj的文件).顶级节点通常包含多个标签,每个标签用于每个构建配置,另一个用于全局构建.在全局节点(没有Condition属性的节点)中,搜索子节点或创建一个子节点(如果它不存在).该节点应包含两个GUID:FAE04EC0-301F-11D3-BF4B-00C04F79EFBC(代表C#项目)和60dc8134-eba5-43b8-bcc9-bb4bc16c2548(代表WPF).整行应如下所示:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

(如果您对详细信息感兴趣,codeproject会提供潜在项目GUID的完整列表:http: //www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs)

在Visual Studio中重新加载项目,然后打开"添加新项"向导.

由于该项目现在正式归类为WPF项目,因此该向导现在应包含WPF窗口选项.顺便说一下,由于没有可以覆盖的WinForms项目GUID,这种方法不会损害现有的项目组件.

我只是尝试了这种方法的VB.NET项目,它的工作原理!

使用VB.NET显然你必须编辑上面的行代替来自{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}的GUID到{F184B08F-C81C-45F6-A57F-5ABD9991F28F}