是否可以在System.Windows.UIElement中包装旧的System.Windows.Forms控件?我知道Browser Control以某种方式包装,而且基础来自System.Windows.Forms。
如果可能,实施会导致任何后果吗?
答案 0 :(得分:4)
您可以在WPF表单中托管Windows窗体控件。只需将其包装在WindowsFormsHost元素中即可。这显示了如何在WPF窗口的一侧托管窗体窗体蒙版测试框。
<Window x:Class="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>
</Window>
答案 1 :(得分:0)
有WindowsFormsHost课程,但我会添加注意事项。如果您使用winforms中的所有旧控件,与WPF混合使用,对用户来说这将是一次不错的体验。我假设你被告知你不能,或者没有时间,但实际上你应该用WPF控件替换你现有的控件。除非你有很多严重复杂的所有者绘制的东西,否则这不应该太费力。
所以我的建议是开始创建现有控件的WPF版本(或者从像Telerik这样的人那里购买一套你创建的非特定于域的控件,比如工具栏等),并且只保留Winforms控件您创建的额外复杂的定制控件。即使这样,你也应该计划一个“第二阶段”来取代它们。您的用户会感谢您。