掌桥专利:专业的专利平台
掌桥专利
首页

一种WPF页面动态生成方法、系统、设备及介质

文献发布时间:2023-06-19 11:42:32


一种WPF页面动态生成方法、系统、设备及介质

技术领域

本发明涉及桌面应用程序开发技术领域,特别指一种WPF页面动态生成方法、系统、设备及介质。

背景技术

WPF(Windows Presentation Foundation)是微软推出的基于Windows的用户界面框架,属于.NET Framework 3.0的一部分,提供了统一的编程模型、语言和框架,做到了分离界面设计人员与开发人员的工作,同时提供了全新的多媒体交互用户图形界面。

在WPF页面开发的过程中,由于WPF页面的功能和需求会随着项目的进展时刻变化,时常需要对已经完成的功能模块进行修改。为了降低因功能和需求的变化而增加的工作量,需要梳理出WPF页面中容易变动的部分和不容易变动的部分,后期修改的工作主要针对容易变动的部分即可。

容易变动部分的修改,传统上存在如下两种方法:方法一是直接对变动的部分直接硬编码解译,在主程序进行修改,但是存在即使是微不足道的一些修改也不得不完全重新编译整个工程,程序更新迭代后还要进行验证和备份,且修改不一定适用于其他客户,造成版本众多不易维护的缺点;方法二是使用脚本,在工程运行时解释执行,但是比直接编译成计算机可执行代码的编译性语言效率低很多,存在功能不够强大、速度慢的缺点。

因此,如何提供一种WPF页面动态生成方法、系统、设备及介质,实现提升WPF页面生成的效率以及灵活性,成为一个亟待解决的问题。

发明内容

本发明要解决的技术问题,在于提供一种WPF页面动态生成方法、系统、设备及介质,实现提升WPF页面生成的效率以及灵活性。

第一方面,本发明提供了一种WPF页面动态生成方法,包括如下步骤:

步骤S10、通过WPF编写页面的逻辑代码以及界面代码,并对所述页面进行预览操作;

步骤S20、基于所述逻辑代码生成逻辑脚本,基于所述界面代码生成界面脚本;

步骤S30、通过代码管理器将所述逻辑脚本编译成DLL文件,将所述界面脚本编译成XAML文件;所述DLL文件和XAML文件的文件名相同;

步骤S40、在所述页面启动运行后,WPF的容器控件基于文件名关联所述DLL文件和XAML文件,执行所述DLL文件和关联的XAML文件,将所述DLL文件执行生成的数据加载到XAML文件执行生成的界面上,完成WPF页面的生成。

进一步地,所述步骤S20中,所述逻辑脚本为C#格式,所述界面脚本为XAML格式。

进一步地,所述步骤S30中,所述DLL文件通过System.CodeDom.Compiler方法生成;所述XAML文件通过System.IO.StreamWriter方法生成。

进一步地,所述步骤S40中,所述执行所述DLL文件和关联的XAML文件具体为:

通过System.Reflection.Assembly.UnsafeLoadFrom方法执行所述DLL文件,通过System.Windows.Markup.XamlReader.Load方法执行所述DLL文件关联的XAML文件。

第二方面,本发明提供了一种WPF页面动态生成系统,包括如下模块:

页面代码编写模块,用于通过WPF编写页面的逻辑代码以及界面代码,并对所述页面进行预览操作;

脚本生成模块,用于基于所述逻辑代码生成逻辑脚本,基于所述界面代码生成界面脚本;

脚本编译模块,用于通过代码管理器将所述逻辑脚本编译成DLL文件,将所述界面脚本编译成XAML文件;所述DLL文件和XAML文件的文件名相同;

页面生成模块,用于在所述页面启动运行后,WPF的容器控件基于文件名关联所述DLL文件和XAML文件,执行所述DLL文件和关联的XAML文件,将所述DLL文件执行生成的数据加载到XAML文件执行生成的界面上,完成WPF页面的生成。

进一步地,所述脚本生成模块中,所述逻辑脚本为C#格式,所述界面脚本为XAML格式。

进一步地,所述脚本编译模块中,所述DLL文件通过System.CodeDom.Compiler方法生成;所述XAML文件通过System.IO.StreamWriter方法生成。

进一步地,所述页面生成模块中,所述执行所述DLL文件和关联的XAML文件具体为:

通过System.Reflection.Assembly.UnsafeLoadFrom方法执行所述DLL文件,通过System.Windows.Markup.XamlReader.Load方法执行所述DLL文件关联的XAML文件。

第三方面,本发明提供了一种WPF页面动态生成设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。

第四方面,本发明提供了一种WPF页面动态生成介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的方法。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

通过将基于逻辑代码生成的逻辑脚本编译成DLL文件,将基于界面代码生成的界面脚本编译成XAML文件,在页面启动运行后,执行DLL文件和关联的XAML文件,将DLL文件执行生成的数据加载到XAML文件执行生成的界面上,完成WPF页面的生成,相对于传统上的直接硬编码解译,不必完全重新编译整个工程,不会产生多余的版本,由于对脚本进行编译,不会牺牲页面运行的效率,能够适应不同客户的不同需求,即极大的提升了WPF页面生成的效率以及灵活性。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1是本发明一种WPF页面动态生成方法的流程图。

图2是本发明一种WPF页面动态生成系统的结构示意图。

图3是本发明一种WPF页面动态生成设备的结构示意图。

图4是本发明一种WPF页面动态生成介质的结构示意图。

具体实施方式

本申请实施例通过提供一种WPF页面动态生成方法、系统、设备及介质,实现提升WPF页面生成的效率以及灵活性。

本申请实施例中的技术方案,总体思路如下:对脚本进行编译以提升脚本运行的效率,不必全重新编译整个工程,不会产生多余的版本,开发人员无需额外再学习一种脚本语言,以提升WPF页面生成的效率以及灵活性。

实施例一

本实施例提供一种WPF页面动态生成方法,如图1所示,包括如下步骤:

步骤S10、通过WPF编写页面的逻辑代码以及界面(UI)代码,并对所述页面进行预览操作;

步骤S20、基于所述逻辑代码生成逻辑脚本,基于所述界面代码生成界面脚本;

步骤S30、通过代码管理器将所述逻辑脚本编译成DLL文件(动态链接库文件),将所述界面脚本编译成XAML文件;所述DLL文件和XAML文件的文件名相同;具体实时时,可同时生成多个的DLL文件和XAML文件,各DLL文件和XAML文件通过文件名进行关联;

步骤S40、在所述页面启动运行后,WPF的容器控件基于文件名关联所述DLL文件和XAML文件,执行所述DLL文件和关联的XAML文件,将所述DLL文件执行生成的数据加载到XAML文件执行生成的界面上,完成WPF页面的生成。只有遵循MVVM模式生成的DLL文件和XAML文件才可以进行UI显示和逻辑代码的关联。

所述步骤S20中,所述逻辑脚本为C#格式,所述界面脚本为XAML格式。

所述步骤S30中,所述DLL文件通过System.CodeDom.Compiler方法生成;所述XAML文件通过System.IO.StreamWriter方法生成。

所述步骤S40中,所述执行所述DLL文件和关联的XAML文件具体为:

通过System.Reflection.Assembly.UnsafeLoadFrom方法执行所述DLL文件,通过System.Windows.Markup.XamlReader.Load方法执行所述DLL文件关联的XAML文件。

实施例二

本实施例提供一种WPF页面动态生成系统,如图2所示,包括如下模块:

页面代码编写模块,用于通过WPF编写页面的逻辑代码以及界面(UI)代码,并对所述页面进行预览操作;

脚本生成模块,用于基于所述逻辑代码生成逻辑脚本,基于所述界面代码生成界面脚本;

脚本编译模块,用于通过代码管理器将所述逻辑脚本编译成DLL文件(动态链接库文件),将所述界面脚本编译成XAML文件;所述DLL文件和XAML文件的文件名相同;具体实时时,可同时生成多个的DLL文件和XAML文件,各DLL文件和XAML文件通过文件名进行关联;

页面生成模块,用于在所述页面启动运行后,WPF的容器控件基于文件名关联所述DLL文件和XAML文件,执行所述DLL文件和关联的XAML文件,将所述DLL文件执行生成的数据加载到XAML文件执行生成的界面上,完成WPF页面的生成。只有遵循MVVM模式生成的DLL文件和XAML文件才可以进行UI显示和逻辑代码的关联。

所述脚本生成模块中,所述逻辑脚本为C#格式,所述界面脚本为XAML格式。

所述脚本编译模块中,所述DLL文件通过System.CodeDom.Compiler方法生成;所述XAML文件通过System.IO.StreamWriter方法生成。

所述页面生成模块中,所述执行所述DLL文件和关联的XAML文件具体为:

通过System.Reflection.Assembly.UnsafeLoadFrom方法执行所述DLL文件,通过System.Windows.Markup.XamlReader.Load方法执行所述DLL文件关联的XAML文件。

基于同一发明构思,本申请提供了实施例一对应的电子设备实施例,详见实施例三。

实施例三

本实施例提供了一种WPF页面动态生成设备,如图3所示,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,可以实现实施例一中任一实施方式。

由于本实施例所介绍的电子设备为实施本申请实施例一中方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。

基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。

实施例四

本实施例提供一种WPF页面动态生成介质,如图4所示,其上存储有计算机程序,该计算机程序被处理器执行时,可以实现实施例一中任一实施方式。

本申请实施例中提供的技术方案,至少具有如下技术效果或优点:

通过将基于逻辑代码生成的逻辑脚本编译成DLL文件,将基于界面代码生成的界面脚本编译成XAML文件,在页面启动运行后,执行DLL文件和关联的XAML文件,将DLL文件执行生成的数据加载到XAML文件执行生成的界面上,完成WPF页面的生成,相对于传统上的直接硬编码解译,不必完全重新编译整个工程,不会产生多余的版本,由于对脚本进行编译,不会牺牲页面运行的效率,能够适应不同客户的不同需求,即极大的提升了WPF页面生成的效率以及灵活性。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

相关技术
  • 一种WPF页面动态生成方法、系统、设备及介质
  • 一种基于装配式方案动态生成目标系统的方法、存储介质和电子设备
技术分类

06120113023407