我正在创建我的第一个WPF应用程序,我想了解在混合System.Windows.Forms命名空间的功能时是否存在某种最佳实践。
基本上我想在用户监视器的右下角默认打开一个弹出窗口。
我在WPF命名空间中找不到与Screen.PrimaryScreen.Bounds等效的内容。我见过的例子建议在WPF应用程序中引用System.Windows.Forms。
这引出了我的问题,这是不好的做法吗?考虑到默认情况下不包括此引用。
我将在现有的Windows窗体应用程序中引用WPF所需的资源,以便我可以使用这个新的WPF窗口。
这种方法有什么问题吗?
编辑:我实际上找到了一个属性,它返回主屏幕的信息而不引用Windows窗体。该属性是SystemParameters.WorkArea,我的混合引用问题仍然存在。
答案 0 :(得分:0)
我不认为在需要时引用WinForms是不好的。由于WPF仍然是一项相对较新的技术,它还没有与WinForms完全兼容。例如,据我所知,WPF中尚未实现标准Windows对话框(打开文件,保存文件,浏览文件夹等)。在WPF应用程序中显示这些内容的唯一方法是使用WinForms版本,或使用P / Invoke自己显示Win32版本。我亲自使用WinForms版本,因为他们已经解决了包装Win32 API的问题。
我的方法是尽可能使用WPF,如果WPF无法满足我的需求,则只回退到WinForms。希望在WPF的下一个版本中,这将变得越来越不必要了。
答案 1 :(得分:0)
此外,您应该考虑资源和性能开销,因为您的应用程序必须为Windows窗体和WPF加载程序集。在MSDN论坛中多次提到WPF / Winforms互操作需要相当多的CPU周期...