C#WinForm项目怎么转变成WPF项目?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#WinForm项目怎么转变成WPF项目?相关的知识,希望对你有一定的参考价值。
在WinForm项目是无法直接转换WPF项目的,只能重新做。
但在WinForm中是可以使用WPF中的控件(或者由WPF创建的自定义控件)
1.新建一个winform项目;
2.在解决方案上新建一个wpf项目;
如图:
如果有如下错误,就在winform中的引用添加System.xaml的引用即可:
错误 1 类型“System.Windows.Markup.IComponentConnector”在未被引用的程序集中定义。必须添加对程序集“System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。
在winform中添加WPF项目下引用的三个程序集:PresentationCore,PrentationFramework,WindowsBase,以及wpf项目WpfApplication1的引用,如图:
在winform的Form1窗体的cs代码中添加using WpfApplication1的引用:
在winform中添加的button按钮的Click事件中New一下Wpf的窗体show出来即可显示:
private void button1_Click(object sender, EventArgs e)
WpfApplication1.MainWindow wpfwindow = new WpfApplication1.MainWindow();
wpfwindow.ShowDialog();
效果如图:
哦哦,谢谢哈!
本回答被提问者采纳 参考技术B在WinForm项目是无法直接转换WPF项目的,只能重新做。
但在WinForm中是可以使用WPF中的控件(或者由WPF创建的自定义控件)
1.新建一个winform项目;
2.在解决方案上新建一个wpf项目;
如图:
如果有如下错误,就在winform中的引用添加System.xaml的引用即可:
错误 1 类型“System.Windows.Markup.IComponentConnector”在未被引用的程序集中定义。必须添加对程序集“System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。在winform中添加WPF项目下引用的三个程序集:PresentationCore,PrentationFramework,WindowsBase,以及wpf项目WpfApplication1的引用,如图:
在winform的Form1窗体的cs代码中添加using WpfApplication1的引用:
在winform中添加的button按钮的Click事件中New一下Wpf的窗体show出来即可显示:
private void button1_Click(object sender, EventArgs e) WpfApplication1.MainWindow wpfwindow = new WpfApplication1.MainWindow(); wpfwindow.ShowDialog(); 效果如图:
技术总结:winform和wpf的区别 以及 项目的“设计规划”掌握java动态代理及原理有多难?
一、winform和wpf的区别:
1.winform 是“前后端”不分离的,wpf是前后端分离的。这个是winform的设计器和c#编码“耦合度”太高了,不能独立进行设计页面。
如下图是wpf的结构:【具体的解释在图片里面】==》它的设计器是用xaml来写 就像html一样,但winform的设计器还是c#的属性值页面跟语言本身的关联度太高。
2. windowform的难度比wpf相对低,因为wpf你要学习xaml的语法。
3.控件自适应:wpf比windowform好太多了
4.界面的UI肯定是wpf好看了,前提是会写样式,它对样式比较自由
5.wpf 可以数据类似vue=>data绑定,windowform没有这样的使用,控件的值需要内部赋值才能起到wpf的这块的效果。
#ps:小插曲,之前写个客户端,优先想到的是易语言,然后思维逻辑调不过来,中文的控件和代码很不适应,最终放弃,现在可以。。。嘿嘿。。。
二、项目的设计规划
1.想做一个“伪”框架【如下图】
sys【系统文件夹】:
放 特性【类似java的特性】 公共的组件 接口 以及 公共的工具类
mapper:
放置xml文件 主页是用于写比较复杂的查询sql 【目前不支持insert select update 等标签再嵌入其他标签或者表达式】,
目的是清晰可见sql【放在c#里面结构不是很清晰】。//可能大佬看到这里会说怎么不把业务放到服务端,使用这个客户端调用就行,因为这里是做敏捷开发,数据库是使用sqlite,如果需要对接后端接口,可以使用远程调用的根据,我会把这部分放到文章最末尾端。
project:
放置业务代码 按模块区分 里面只有service的实现==》仿java
工具层级已有 远程调用接口的工具、excel导入导出的工具、mysql/sqlite/oracle的sql生成工具、xml解析注入工具、word生成工具等等。
##纠正一下,今天偶然看了一下b站的 一个c#客户端的项目教程
关于项目的搭建:
项目结构是分为三层: 【主要是层级和类库 按单个解决方案肯定大于三个】
一、UI表现层,展示的界面
如我上图所示
二、BLL业务逻辑,具体业务的一组装层,对数据访问层返回的结构做处理 【类似java的service层】
三、DAL 数据访问层,直接操作数据库 【类似java的dao层】
四、实体模型层:Models 贯穿三层,传递数据
五、辅助工具的层:Common层
所以项目最上面的规划需要调整,在此写这么多是为了防止新手看到 会走错路。
以上是关于C#WinForm项目怎么转变成WPF项目?的主要内容,如果未能解决你的问题,请参考以下文章
winform中webbrowser控件设置成项目中的html地址
winform 别人部署后的项目怎样再用vs2010 打开?