我花了一些时间研究WinForm用户和自定义控件。然而,在我的脑海里,越来越响亮的声音说WinForm技术已经过时,而WPF是桌面上的未来。
我只是在WPF看起来很表面。任何人都可以评论是否可以在WPF上使用WinForm用户控件,以及WPF用户控件的不同WinForm用户控件如何?
我正在处理的大多数控件执行某种类型的所有者绘制,而不是将子控件放到控件上。我只是想知道在WPF下有多少代码可以重用。
答案 0 :(得分:5)
使用possible在WPF应用程序中使用WinForms控件肯定是WindowsFormHost
control。像往常一样,有一些警告。特别是,这两种控件类型不能很好地重叠。
但是,这样做似乎会阻止您首先利用许多(如果不是全部)切换到WPF的好处。如果您有一个适合您的大型代码库,我不确定您认为需要迁移的原因。 总是会出现更新的东西。真正的战斗是弄清楚它是否真的更好,至少对于你的特殊情况。
强制性免责声明:我远非WPF专家,而且在WinForms上显然比许多开发人员少得多。所以也许我的建议应该花点心思,但我认为值得考虑。
答案 1 :(得分:3)
您的控件将可重复使用(通过WindowsFormHost
,如Cody建议的那样)。但是,我不愿意将代码移植到WPF。基本的编程模型是完全不同的(WPF在很大程度上依赖于数据绑定,因此受益于非常不同的代码隐藏),渲染模型(WPF不使用GDI +)也是如此。在WPF中处理大多数控件的最佳方法是使用内置模板;除了自定义布局面板(实际上并非“绘图”)之外,到目前为止我还没有找到任何需要在控件中使用自定义绘图方法的内容。
创建一个WPF应用程序只是为了托管你的WinForms控件肯定是一种浪费。 WPF可能(或可能不会)成为“未来”,但这并不意味着你应该随心所欲地扔掉你所拥有的东西。
你说你只是表面上看起来很糟糕。如果您认为值得投资,为什么不做一个R& D项目来证明集成如何在系统的一小部分上起作用?