WPF应用程序引用System.Windows.Forms

4
我正在创建我的第一个WPF应用程序,我想了解一下是否有某种最佳实践来混合使用System.Windows.Forms命名空间的功能。
基本上,我想要一个默认在用户显示器右下角打开的弹出窗口。
我在WPF命名空间中找不到Screen.PrimaryScreen.Bounds等效项。我看到的示例建议在WPF应用程序中引用System.Windows.Forms。
这让我想到了一个问题,这是不是不好的做法?考虑到这个引用默认情况下并没有包含。
我将在我的现有Windows Forms应用程序中引用所需的WPF资源,以便我可以使用这个新的WPF窗口。
这种方法有什么问题吗?
编辑:我实际上找到了一个属性,它返回主屏幕的信息,而不需要引用Windows Forms。该属性是SystemParameters.WorkArea,但我的混合引用的问题仍然存在。
2个回答

0

我认为,必要时参考WinForms并不是什么坏事。由于WPF仍然是一项相对较新的技术,它还没有完全与WinForms功能对齐。例如,据我了解,标准的Windows对话框(打开文件、保存文件、浏览文件夹等)都还没有在WPF中实现。在WPF应用程序中显示这些对话框的唯一方法是使用WinForms版本,或者使用P/Invoke自己显示Win32版本。我个人更喜欢使用WinForms版本,因为他们已经完成了Win32 API的封装。

我的做法是尽可能多地使用WPF,只有当WPF不能满足我的需求时才退回到WinForms。希望在下一个版本或几个版本后,这将变得越来越不必要。


2
WPF确实有OpenFileDialog和SaveFileDialog。它们位于Microsoft.Win32命名空间中。 - Danko Durbić

0
此外,您还应考虑资源和性能开销,因为您的应用程序将需要加载Windows Forms和WPF的程序集。在MSDN论坛中多次提到,WPF / Winforms互操作需要相当多的CPU周期...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接