是否可以在WPF Web应用程序中嵌入Windows窗体?

时间:2014-03-10 21:07:54

标签: c# .net wpf winforms

我正在构建一个将使用WPF托管在Web上的应用程序。我在旧的Windows窗体应用程序中获得了一些遗留表单,是否可以嵌入它们,或者我将不得不重写它们?

我知道我可以轻松地将它们嵌入到桌面WPF应用程序中。

2 个答案:

答案 0 :(得分:2)

可以在XBAP中使用WindowsFormsHost托管Windows窗体内容。以下是a blog post by Ahmadreza Atighechi演示过程。

请注意,这需要完全信任才能运行,并且可能仅适用于IE。这在WPF Partial Trust Security中有记录,其中Windows窗体集成被列为“部分信任中不安全的WPF功能”之一。这意味着使用WindowsFormsHost时XBAP的默认部署将失败,并且您需要确保在访问XBAP时每个系统都设置为使用完全信任。上面的安全链接描述了这方面的主要问题。

答案 1 :(得分:1)

至于在WPF或ASP.NET中包含整个表单,我非常怀疑它可能在IE之外;因此,疏远了所有其他浏览器。

如果您仍然坚持要保留当前的应用程序并使其“像网络一样”,请将其部署为ClickOnce。如果这是一个选项,那可能是你最好的选择。

这允许您在WPF for web中包含旧版控件...

<Window x:Class="HostingWfInWpf.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"  
    Title="HostingWfInWpf"
    >

    <Grid>

        <WindowsFormsHost>
            <wf:MaskedTextBox x:Name="mtbDate" Mask="00/00/0000"/>
        </WindowsFormsHost>

    </Grid>

自:

http://msdn.microsoft.com/en-us/library/system.windows.forms.integration.windowsformshost%28v=vs.110%29.aspx

除此之外,我根本不会推荐。