Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在大型WPF项目中使用大型WinForms项目的一部分_C#_Wpf_Winforms_Winforms Interop - Fatal编程技术网

C# 在大型WPF项目中使用大型WinForms项目的一部分

C# 在大型WPF项目中使用大型WinForms项目的一部分,c#,wpf,winforms,winforms-interop,C#,Wpf,Winforms,Winforms Interop,这两个应用程序都相当陈旧,并且都是由几个人在几年内构建和维护的。目前,WinForms项目中使用的一个控件确实需要在WPF项目中显示 我已经读过关于在WPF项目中使用WinForms控件的内容,在大多数情况下,如果您只是实例化一个常规的空WinForm控件,它看起来相对简单 我想知道的是,您如何在另一个项目中最好地使用大型项目的一部分?理想情况下,在发送并加载所需数据后,WinForm控件将在一个选项卡上的一个WPF控件中可见。以下是一些一般准则 从WPF应用程序中,将项目引用添加到: 您的W

这两个应用程序都相当陈旧,并且都是由几个人在几年内构建和维护的。目前,WinForms项目中使用的一个控件确实需要在WPF项目中显示

我已经读过关于在WPF项目中使用WinForms控件的内容,在大多数情况下,如果您只是实例化一个常规的空WinForm控件,它看起来相对简单


我想知道的是,您如何在另一个项目中最好地使用大型项目的一部分?理想情况下,在发送并加载所需数据后,WinForm控件将在一个选项卡上的一个WPF控件中可见。

以下是一些一般准则

从WPF应用程序中,将项目引用添加到:

  • 您的WinForms项目
  • WindowsFormsIntegration
  • System.Windows.Forms
修改您的XAML以包括:

你最终会得到这样的结果:


您可以在“”和“”的MSDN文档中阅读更多内容。

谢谢,我将查看这些资源。我只是有点担心,因为WinForms项目中有太多的库、类和不同的项目,所以我不确定将整个大型项目放到WPF项目中是否可行。我们来看看进展如何。
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TabControl>
            <TabItem Header="Old Form">
                <WindowsFormsHost Name="WinFormsHost"></WindowsFormsHost>
            </TabItem>
        </TabControl>
    </Grid>
</Window>
public MainWindow()
{
    InitializeComponent();

    WinFormsHost.Child =
        new Form1 { TopLevel = false, FormBorderStyle = FormBorderStyle.None };
}