在WindowsFormAPP中打开 WPF窗口

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

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

添加它后,我添加了 system.xaml 参考....调试罚款。

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

novoLogin nl = new novoLogin();
nl.show();

编译器给出这个错误:

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

29

brief article解释了如何实现这一点。

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

创建 / 添加WPF Custom Control Library类型的新项目

添加Window (WPF)类型的新项

用 WPF 窗你的事情

从 WinForms 应用程序中,创建并打开 WPF 窗口

using System;  
using System.Windows.Forms;  
using System.Windows.Forms.Integration;  
var wpfwindow = new WPFWindow.Window1(); 
ElementHost.EnableModelessKeyboardInterop(wpfwindow); 
wpfwindow.Show();
5

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

摘要:

在任何文本编辑器中打开项目的清单文件(扩展名为.csproj 或.vbproj 的文件)。顶部节点通常包含多个标记,每个构建配置一个,全局一个。在全局节点(没有 Condition 属性的节点)中,搜索子节点或创建一个,如果它不存在。此节点应包含两个 GUID:FAE04EC0-301F-11bbbbc

<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,您必须编辑上述行,将 GUID 从 {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 替换为 {F184B08F-C81C-45F6-A57F-5ABD9991F28F}

1

我想在 windowForm 中显示 wpf 表单,并且有一些资源问题...

(因为我使用了资源..)。最后我在我的 windowsForm 项目中使用了这个代码:

首先创建你的应用程序类的全局实例是这样的:

WPFTest.App app;

为什么这是全球性的?

因为这个类是单例,你不能在同一个 AppDomain 中创建多个实例

现在例如你有一个按钮事件来显示 wpf 表单。

    private void on1_Click(object sender, EventArgs e)
    {
        if (System.Windows.Application.Current == null)
        {
            app = new WPFTest.App()
            {
                ShutdownMode = ShutdownMode.OnExplicitShutdown
            };
            app.InitializeComponent();
        }
        else
        {
            app = (WPFTest.App)System.Windows.Application.Current;
            app.MainWindow = new WPFTest.YourWindow();
            System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(app.MainWindow);
            app.MainWindow.Show();
        }
    }

注意:WPFTest 是您的项目名称,YourWindow()是您要显示的窗口

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(608)
如何让像 *ologist和*ology这样的词干/lemmatize到同一个根
上一篇
Safari10.1:由于访问控制检查 无法加载带有查询参数的XMLHttpRequest
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(61条)