我正在构建一个将使用WPF托管在Web上的应用程序。我在旧的Windows窗体应用程序中获得了一些遗留表单,是否可以嵌入它们,或者我将不得不重写它们?
我知道我可以轻松地将它们嵌入到桌面WPF应用程序中。
答案 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>
自:
除此之外,我根本不会推荐。