将Winform和wpf的界面转换为CPF代码用来实现跨平台
CPF的设计器里带界面代码转换功能,将运行中的Winform或者wpf的程序界面转换为cpf代码,主要转换控件类型和布局,默认支持的是常用的原生控件。不支持Netcore,只支持.Netframework,wpf的只能是.net4.0和以上的
在设计界面的左边的圈圈按钮,点击打开就是界面代码转换界面。使用的时候按住界面代码转换窗体上的圈圈按钮,拖到你要转换的程序的界面上,自动将程序的界面转换为界面代码,并在设计器上显示。


WPF转换效果
wpf程序运行界面

WPF设计界面

CPF转换后的设计界面

CPF运行效果

WPF局部代码转换效果
将wpf里的Calendar进行局部控件转换,转换到的代码在下面文本框里,复制文本框里的代码,直接粘贴到CPF的Panel里


Winform效果
设计器和运行效果

CPF转换后的效果


加上CSS后的效果

当然不能百分百转换,只有UI代码,没有业务逻辑的,主要支持原生控件的常用控件,不能直接支持自定义控件。不过有提供简单的自定义控件和CPF的控件映射,打开开发者工具的安装目录,里面的CodeConvert.txt打开,前面是自定义控件的类型名,后面是对应的CPF控件名,中间用|分割。另外对WPF自定义模板的转换支持不够,只能根据自己的需求进行局部转换,把需要的模板转换出来。


有了转换好的UI代码,你还需要改改,比如调整CSS和修改控件属性等等,另外加上数据绑定和命令绑定,加上业务逻辑。
可能有人会问什么原理,其实就是程序注入,注入代码到运行的Winform和wpf程序中,然后遍历里面的控件,再把这些控件转换为CPF代码
将Winform和wpf的界面转换为CPF代码用来实现跨平台的更多相关文章
- WPF设计界面不执行代码
一般在我们在设计WPF XAML界面时,XAML 引用一些后端的类.比如UserControl.Converter.MVVM,引用 xmlns:ALLUserControl="clr-nam ...
- 【源码分享】WPF漂亮界面框架实现原理分析及源码分享
1 源码下载 2 OSGi.NET插件应用架构概述 3 漂亮界面框架原理概述 4 漂亮界面框架实现 4.1 主程序 4.2 主程序与插件的通讯 4.2.1 主程序获取插件注册的服务 4.2 ...
- WPF换肤之四:界面设计和代码设计分离
原文:WPF换肤之四:界面设计和代码设计分离 说起WPF来,除了总所周知的图形处理核心的变化外,和Winform比起来,还有一个巨大的变革,那就是真正意义上做到了界面设计和代码设计的分离.这样可以让美 ...
- WinForm、wpf、silverlight三者关系
最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分.但是我目前对于.NET的WinForm.wpf.silverlight这三者的关系弄的不是很清楚,一般书中很少介绍wpf和 ...
- 对比MFC和Winform及WPF
MFC 生成本机代码,自然是很快.可是,消息循环,减缓了界面显示速度.winform 封装了 win32 的api,多次进行P/invoke 操作 (大部分使用p/invoke操作封装),速度慢 .w ...
- 【Win32 API】利用SendMessage实现winform与wpf之间的消息传递
原文:[Win32 API]利用SendMessage实现winform与wpf之间的消息传递 引言 有一次心血来潮,突然想研究一下进程间的通信,能够实现消息传递的方法有几种,其中win32ap ...
- Winform、WPF、Silverlight、MFC区别与联系
WinForm 在Windows中,诸如窗体绘制等功能由GDI(图形设备接口)实现,放在操作系统内核中.Windows Forms在底层使用的是GDI+.GDI+是GDI的“面向对象包装”,使用C++ ...
- WinForm和WPF颜色对象的转换
原文:WinForm和WPF颜色对象的转换 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/article/details ...
- winform和WPF的那点事~
一.定义 1.Winform的定义: WinForm是·Net开发平台中对Windows Form的一种称谓. 2.WPF的定义: WPF(Windows Presentation Foundatio ...
随机推荐
- Spring MVC工作原理及源码解析(二)DispatcherServlet实现原理及源码解析
1.DispatcherServlet 处理流程 从上一篇文章中Spring MVC原理图中我们可以看出:DispatcherServlet 在 Spring MVC框架 中处于核心位置,它负责协调和 ...
- 教你用SQL实现统计排名
前言: 在某些应用场景中,我们经常会遇到一些排名的问题,比如按成绩或年龄排名.排名也有多种排名方式,如直接排名.分组排名,排名有间隔或排名无间隔等等,这篇文章将总结几种MySQL中常见的排名问题. 创 ...
- pytest用法---学习篇1
一.pytest运行规则: pytest可以收集所有以test_*.py文件,Test开头的类,和以test_开头的函数和方法,都能识别成测试用例. 当然也可以改变这个的识别规则 二.常用参数 -k ...
- 【敏杰开发】Beta阶段事后分析
[敏杰开发]Beta阶段事后分析 设想和目标 Q 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付 ...
- 阿里云RDS数据库到期实例被清除,别急着哭(阿里没有删库跑路),或许还有一线生机
阿里资源到期未续费,数据保存期限: ECS实例的保存期是15天. Redis实例的保存期是7天. RDS实例的保存期也是7天. 过期当天会收到一条短信: [阿里云]尊敬的用户:您的RDS实例(实例ID ...
- 关于flask的模板注入的学习
flask模板注入的学习 关于flask模版注入,之前不太理解,看了很多文章才弄懂,主要原理就是渲染函数的参数用户可控就造成了模板注入 就会使用户构造恶意的代码进行逃逸从而进行攻击 flask模板渲染 ...
- [BD] 阿里云部署hadoop集群
安装方式 rpm包安装:下载rpm文件后离线装,安装过程中会下载相应依赖 bin文件安装:在线安装 tar包安装 步骤 下载安装文件:买香港机器,按量付费,传到windows电脑 购买三台,按需付费, ...
- tigervnc报错
tigervnc报错
- Linux应用程序设计:用一种讨巧方式,来获取线程栈的使用信息
面对的问题 对于线程的栈空间,相信各位小伙伴都不陌生.它有下面的这几项特性: > 1. 由操作系统分配固定的空间; > > 2. 使用一个栈寄存器来保存实时位置; > > ...
- Java枚举类与注解详解——一篇文章读懂枚举类与注解详
目录 一.枚举类 ① 自定义枚举类 ② enum关键字定义枚举类 ③ enum 枚举类的方法 ④ enum 枚举类实现接口 二.注解 ① 生成文档相关注解 ②注解在编译时进行格式检查 ③注解跟踪代码的 ...