本文主要介绍了使用高级程序员命令行界面创建自定义的数据绑定项目模板,分享给大家,具体如下:
描述
当我们安装完DotNetCore 3.0版本的软件开发工具包(软件开发工具包)后,我们就可以创建基于DotNetCore的数据绑定项目模板,通过如下硬币指示器(硬币水平指示器的缩写)命令行界面(批处理脚本的命令行界面)可以方便快捷的创建并运行我们的项目:
高级程序员新wpf-n WpfAppcd WpfAppdotnet restort net运行做过数据绑定开发的朋友都知道,这个项目模板肯定不符合我们的预期,我们希望我们的项目模板能够加入视图模型的默认代码段,并且能够和DotNetCore紧密合作,这样岂不是更加方便了吗?所以本文使用视图模型的一种实现MvvmLightStd10来教大家如何创建一个我们理想的项目模板。
操作
首先,我们基于DotNetCore 3.0创建一个原始的数据绑定项目模板,然后引用如下库:
微软。扩展名。依赖注入MvvmLightLibsStd10可通过执行硬币指示器(硬币水平指示器的缩写)命令行界面(批处理脚本的命令行界面)命令进行安装
高级程序员添加包微软。扩展DependencyInjectiondotnet .添加包MvvmLightLibsStd10注:因为我们使用了DotNetCore,所以我们尽量让我们安装的第三方包是基于。网络标准方式来实现。
然后,尝试修改我们的这个项目,把它改成我们以后期望创建的项目模板的样子。可以参考我的如下修改:
项目结构如下图所示:
其中,srcModelsDataItem.cs的示例代码如下所示:
使用系统;使用系统。集合。通用;使用系统。文字;命名空间WpfApp .模型{公共类DataItem {公共字符串标题{ get私有集;}公共数据项目(字符串标题){ Title=Title } } } src Models idataservice . cs的示例代码如下所示:
使用系统;使用系统。集合。通用;使用系统。文字;命名空间WpfApp .模型{公共接口IDataService { void GetData(ActionDataItem,异常回调);}}srcModelsDataService.cs的示例代码如下所示:
使用系统;使用系统。集合。通用;使用系统。文字;命名空间WpfApp .模型{公共类DataService : idata服务{ public void GetData(ActionDataItem,Exception callback){ var item=new DataItem(' Hello ."网络核心!");回调(项,null);} } } src view models mainview model。铯的示例代码如下所示:
使用GalaSoft .MvvmLight使用WpfApp .模型;命名空间WpfApp .视图模型{公共类MainViewModel :视图模型库{私有只读IDataService _ dataServiceprivate字符串_ welcomeTitle公共字符串欢迎标题{ get { return _ welcome title} set { Set(ref _welcomeTitle,value);} }公共MainViewModel(idata ServiCe DataServiCe){ _ DataServiCe=DataServiCe;_dataService .GetData((item,error)={ if (error!=null){ return;} WelcomeTitle=item .标题;});} } } src Views MainView.xaml的示例代码如下所示:
Window x:Class='WpfApp .视图。MainView ' xmlns=' http://架构。微软。com/winfx/2006/xaml/presentation ' xmlns : x=' http://架构。微软。com/winfx/2006/xaml ' xmlns :d=' http://架构。微软。com/expression/blend/2008 ' xmlns : local=' clr-namespace 3360 wpfapp ' xmlns : MC的示例代码如下所示:
使用系统窗户.使用WpfApp .视图模型;命名空间WpfApp .视图{公共分部类主视图:窗口公共MainView(MainViewModel VM){ InitializeComponent();这个DataContext=vm} }}srcApp.xaml的示例代码如下所示:
应用程序x:Class='WpfApp .app ' xmlns=' http://架构。微软。com/winfx/2006/xaml/presentation ' xmlns : x=' http://架构。微软。com/winfx/2006/xaml ' xmlns : local=' clr-namespace 3360 wpfapp '/src app。xaml。铯的示例代码如下所示:
使用微软。扩展。依赖注射;使用系统窗户.使用WpfApp .模型;使用WpfApp .视图模型;使用WpfApp .观点;命名空间WpfApp{ public分部类App : Application {公共服务提供商服务提供商{ get私有集;}受保护的覆盖无效OnStartup(StartupEventArgs e){ base .OnStartup(e);var服务集合=新服务集合();配置服务(服务集合);服务提供商=服务集合.BuildServiceProvider();var mainWindow=ServiceProvider .GetRequiredServiceMainView();主窗口show();} private void configureSerVices(ServiCe collection services){ ServiCes .AddTransientMainView();服务addtransienmainviewmodel();服务AddScopedIDataService,DataServiCe();} }}修改完毕后尝试编译运行我们的项目,确保可以正常编译运行。
之后,在我们的项目根目录科学研究委员会下新建一个模板配置文件夹,然后在里面新建一个template.json文件,进行如下示例配置:
{ ' $ schema ' : ' http://JSON。schemastore。org/template ',' author ' : ' hippizhou[email protected]',' classions ' :[' wpf ',' mvv light ',' Dependency Injection ',' name ' : ' wpf mvvmlight:使用dotnetcore用mvv灯创建wpf .' tags': { 'language': 'C# ',' type': 'project' },' identity ' : ' wpf.mvvmlight ','简称' : ' wpf-mvv light ','源名' : ' wpf。mvv灯','首选目录' : true}最后,打开我们的终端,将目录切换至当前项目目录下(就是模板配置所在的目录),然后执行下述安装操作
dotnet new-I c : 用户嬉皮士周桌面helloworldwpfapp此时,我们的项目模板会被打包到DotNetCore的硬币指示器(硬币水平指示器的缩写)命令行界面(批处理脚本的命令行界面)中,如下图所示:
同时,在C: 用户嬉皮周。模板引擎 dotnetcli v 3。0 .100-预览3-010431目录下的以templatecache.json结尾的数据文件内容也会发生修改,会在TemplateInfo结点下新增一个如下的节点内容:
{ ' ConfigMountPointId ' : ' f 3861181-7a 43-4fc 5-ab1c-12d 95 e 734 c0a ',' Author ' : ' hippizhou[emailprotected],' classifies ' :[' wpf ',' mvv light ',' Dependency Injection' ],' DefaultName': null,' Description': ' ',' Identity ' : ' wpf.mvvmlight ',' GeneratorId ' : ' ' }、“default value”:“c#”}、“type”: {“Description”: null、“choice and descriptions”3: {“project”注:如果后期我们不慎将我们的模板删除了,我们通过删除掉这两个文件里面对应的模板节点就可以在硬币指示器(硬币水平指示器的缩写)命令行界面(批处理脚本的命令行界面)中取消应用了。
我们可以使用下述操作进行测试一下:
#使用我们定制的项目模板创建wpf项目dotnet新wpf-mvv light-n testcd测试dotnet还原dotnet运行。如果没有意外的话,我们可以看到这个项目的代码段和我们定制的模板是一样的。
如果您卸载我们的项目模板,您可以使用以下命令:
dotnet new-u c : users hippizhou desktop hello world wpfapp注意:我们需要确保我们的自定义模板不会丢失,否则到时候卸载会很麻烦(至少到目前为止)。
这里不介绍如何将我们的自定义模板上传到NuGet供他人下载使用。具体操作请参考花园介绍如何在DotNetCore MVC中构建我们自己的项目模板。我在本文中创建的代码模板将不会提交,所以最好等待MVVMLight的原作者Laurent Bugnion。
摘要
本文介绍了如何通过DotNet CLI创建自定义的WPF项目模板。在实际使用过程中,CLI的功能和支持的参数会更多,感兴趣的朋友可以自行研究。
相关参考文献
如何创建点网络新项目模板点网络核心
创造你自己的。NET核心项目模板
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。