乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 126|回复: 6

将WinForm转换为WPF窗口

[复制链接]

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2019-10-15 10:19:47 | 显示全部楼层 |阅读模式
有这么难吗?我花了大约6个小时来阅读和观看WPF上的一些学习资源,然后在WPFwindow上重新创建表单。从视觉上看,这似乎是我最需要的,看图片。然而,获取所有的组合框、复选框、文本框等。充满保存的数据,并在数据发生变化时根据需要做出反应,这被证明是一个挑战。为什么开发人员不能像WinForm控件在创建WPF时那样,对属性、方法和事件使用相同的命名过程呢?
我已经断断续续地做了3天了,现在只完成了大约75%。我有大约90个这样的表单需要最终转换,一些不太复杂,一些有更多的控件。现在,你可能会问,为什么我做这个练习是徒劳的?嗯,由于WinForms在窗口字体缩放设置为100%以外的情况下,在租用显示器上使用时并不总是正确地调整大小,我发现有必要走这条路。
如果任何人对如何更快/更顺利地完成这项工作有任何建议,请随时插话。

wzsexrj2pak.png

wzsexrj2pak.png


3vpzkqlsmlr.png

3vpzkqlsmlr.png

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2019-10-15 12:57:42 | 显示全部楼层
杰夫,当我开始和WPF一起工作时,我经历了同样的挫折。作为长期的Autocad程序员,我相信我们大多数人更习惯于赢得形式。我们通常会跳到UI中,快速构建一个假设工具的原型,并展示给业务部门进行进一步的讨论,我们通常会在完成一些UI工作后,以面向对象的方式思考整个过程。
在我看来,如果不用MVVM模式来使用WPF就没有太大的意义(除了作为对话框的超级简单的UI)。对于MVVM,应该从ViewModel开始。只有当一个有意义的视图模型可用时,视图才可以通过绑定视图模型数据来具体化。当然,您可以用假数据/测试数据硬编码视图模型的一些可绑定属性,以便视图实际上按预期显示,特别是如果视图必须显示一组对象,如ListBox、ListView、Grid,...
至于您展示的特定UI,因为它不显示对象集合,所以您仍然可以继续在XMAL上工作,使UI可运行/可显示。例如,对于combox,您可以在XMAL中硬编码combox项。但是您必须将该UI所需的所有数据放入ViewModel中,并将它们正确地公开为可绑定的属性。
对我来说,如果UI是无模式窗口/PaletteSet,我只使用WPF。如果是模态UI,我只在相当简单的情况下使用Win Form,UI显示时在AutoCAD中不需要任何动作。
有一点是肯定的,即使一个人非常熟悉/擅长WPF/MVVM,使用WPF肯定比使用Win形式花费更多的时间。当我们VBA的程序员第一次尝试的时候,我感到沮丧的感觉非常相似。15年前的NET API:突然,你觉得自己的工作效率不如以前了,需要学习做几乎同样的事情(好吧,我们只是意识到,通过不辞辛苦的学习,我们可以做得更多)。我很高兴这些天我能坚持使用WPF的大部分AutoCAD界面。
不是关于如何做的建议,只是分享一些想法/感受。
回复

使用道具 举报

14

主题

275

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
331
发表于 2019-10-15 14:08:10 | 显示全部楼层
我同意诺曼的观点。我也开始使用WPF,因为它是WinForms。我还在学习,经常把头撞在桌子上,但现在我不想再回到WinForms了。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2019-10-16 09:50:07 | 显示全部楼层
谢谢你们,知道你们在学习过程中也感到沮丧,我对此感觉好多了。我想我会开始戴头盔来保护额头免受办公桌的伤害。
回复

使用道具 举报

14

主题

275

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
331
发表于 2019-10-17 06:52:39 | 显示全部楼层
我刚刚花了两天时间设计一个带有自定义物品的组合盒。我试图在组合框和下面的列表中显示两行文本和一张图像。打开的列表按设计显示项目,但组合框为空。代码变得越来越复杂,包括绑定,转换器,样式触发器,但没有任何帮助。最后,我在没有任何样式的情况下重新开始,现在它按设计工作。现在慢慢添加样式和绑定选项。
然后,我对项目上的工具提示设置了样式。它会在列表中的每个项目上弹出,但不在组合框中弹出。将工具提示移动到数据模板,以便可以在下面的组合框和列表中使用它,而无需对其进行两次设计。然后我发现当组合框未填充时,它也会弹出。我使用样式触发器解决了这个问题,该触发器在 SelectedItem 为 null 时设置 TooltipService.IsEnabled。
但现在它有效,看起来不错。但是我的额头上又有一个蓝色的污渍,因为砸在桌子上。长话短说:WPF实现起来很糟糕,但结果是值得的。它实际上是为非程序员设计的。程序员不需要深入研究设计,设计师也看不到代码。但是,由于我们既编程又设计,我们必须在两个世界中工作。
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2019-10-18 15:47:45 | 显示全部楼层
我同意学习MVVM。 阅读它,直到你的眼睛流血,从谷歌搜索“Josh Smith MVVM”开始。 他的ViewModelBase和RelayCommand构成了我的MVVM框架的全部,尽管完整的框架确实存在并且可能值得研究。
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2019-10-27 22:17:04 | 显示全部楼层
MVVM·莱特和劳伦特(创建了MVVM·莱特)的复视课程让我开始接触MVVM。Pluralsight上有一些关于WPF·MVVM的视频课程,我认为订阅几个月来开始学习是值得的。研究绑定和XAML语法。StackOverflow对于你会遇到的所有奇怪的问题来说都是很棒的。
https://www . plural sight . com/courses/mvvm-light-toolkit-fundamentals
最初的学习曲线非常陡峭,但你会成功的。不要对自己太苛刻,重构是一件事。我仍然将cruft从代码中移到它应该在的地方。把它做完,然后把它弄干净。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 05:07 , Processed in 0.155344 second(s), 69 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表