在VS 2010中的Winforms项目中添加WPF窗口

13

在VS 2010中选择“添加新项”时,是否可以从winforms项目中访问所有WPF项?默认情况下,我只能访问WPF用户控件。



我想在winforms项目中添加一个WPF窗口,而不仅仅是一个用户控件。

编辑:简短回答:似乎本身不可能这样做,但可以手动添加WPF资源和必要的引用。


1
请查看此链接:https://dev59.com/c3RB5IYBdhLWcg3w-789 - Atomosk
4个回答

8

显然你不能直接这样做,但你可以添加一个新的用户控件,然后修改代码使它成为一个窗口。只需创建一个新的WPF项目,添加一个窗口,看看你需要更改哪些内容以将你的用户控件转换为窗口。


我曾考虑过这样做,但我预计这并不是非常简单的事情,可能会让人抓狂,所以我甚至没有尝试 :-) 不过我会试一试。 - Mehdi LAMRANI
首先,您需要在XAML中将UserControl标签替换为Window标签,并使类扩展Window。然后再看看还有什么需要修改的地方。 - Tudor
这可能是最好的解决方案,并且在此逐步解释:http://www.i-think22.net/archives/2008/08/05/adding-wpf-windows-to-an-existing-windows-form-project/ - surfen

7
在我看来,使用以下方案是最“干净”的选择:
  1. 创建一个 WPF 项目(添加您需要的任何 WPF 窗口)。我们称其为 “WPFProject”。
  2. 在同一个解决方案中创建一个 WinForms 项目(添加您需要的任何表单)。我们称其为 “MainProject”。
  3. 在 MainProject 中添加对以下内容的引用:

    • WPFProject
    • PresentationCore
    • PresentationFramework

就这些了,现在您可以从 MainProject 打开您的 WPF 窗口(例如,通过按下按钮):

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim mywpfform = New WPFProject.MainWindow //MainWindow is the default name of your first WPF window. Obviously you can open any other
        mywpfform .Show()
End Sub

4
在SOF上,没有解释就进行负评是最无礼的事情,不幸的是。 - Mehdi LAMRANI

3

1
谢谢,这也很有帮助。虽然不完全符合我的预期,但它提供了有价值的信息。 - Mehdi LAMRANI

1

在同一个项目中可以同时使用WinForms和WPF。可以修改WinForm项目,以便添加WPF窗口和其他WPF元素。为此,您必须将WPF项目GUID添加到WinForms项目的清单文件中。

打开项目清单文件(扩展名为.csproj),并将PropertyGroup节点(没有Condition元素的节点)修改如下:

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

进行此修改后,请重新启动VS。现在您可以添加WPF窗口或其他WPF元素。您还可能需要添加System.Xaml、PresentationCore和PresentationFramework引用。

更多信息请查看:https://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDshttp://www.mobilemotion.eu/?p=1537


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接