解决VS2019中.net core WPF 暂时无法使用 Designer 的临时方法
目录
- 解决 VS2019 中.net core WPF 暂时无法使用 Designer 的临时方法
- 安装 vs 2019 professional/enterprise版本
- 在vs的设置里,勾选.NET core下的"Use preview SDK"
- 使用vs自带的模板,选择其中的 .net core WPF 创建Project, 取名为"CoreHiWPF"
- 在刚创建的Solution中使用vs自带的模板,选择其中的.net framework WPF添加新的project,取名为"HiWPF"
- 更改 .net core WPF项目 CoreHiWPF 的Assembly Name,使得两个项目一致
- 确保 .net core WPF项目 CoreHiWPF 是启动项目
- 试用 XAML Designer
- 按需修改MainWindow.xaml和相应的.cs
解决 VS2019 中.net core WPF 暂时无法使用 Designer 的临时方法
以下方法来自于微软github开源项目 dotnet/samples:
dotnet/samples - WPF Hello World sample with linked files,请放心使用。
此篇文章是上篇文章解决vs2019中暂时无法为.net core WinForms使用 Designer 的临时方法的姊妹篇,但对WPF而言实现起来比WinForms简单很多。核心思想还是借壳~
目前.net core下的WPF项目中的XAML可视化设计器(Designer)尚不可用,后续的Visual Studio 2019 Update才会支持该部分的功能。不过目前我们想在vs2019中使用 Designer,有一种临时解决方法。
可以使用Visual Studio来处理链接文件(Link files)的功能,并将其XAML Designer用于Classic Framework (即.net Framework的WPF项目)。
具体的解决方法是在同一个 Solution
下创建两个项目:
- 用于设计WPF应用程序的.NET Framework应用程序.net Framework 项目)
- 用于运行WPF应用程序的.NET Core应用程序(.net core项目)
而两个应用程序(.net core项目和相应.net Framework 项目)都将引用相同的文件,共享一个Assembly Name
。
安装 vs 2019 professional/enterprise版本
先安装 vs 2019 professional/enterprise版本,安装好.net core 3.0 SDK,此时试着创建一个.net core下的 WPF应用,
设置好相关项目名和存放路径后,会弹出:
下一步骤,勾选.NET core下的"Use preview SDK"
会解决这个问题。
当然也可使用命令行/Powershell来创建。
- 打开命令行/Powershell
- 使用cd命令,切换到自己平时存vs项目的路径(比如我切换到
D:\Coding
) - 输入命令
dotnet new wpf -n "CoreHiWPF"
在vs的设置里,勾选.NET core下的"Use preview SDK"
设置完,重启vs才能生效。
此时用vs打开刚才的Solution
即可。
使用vs自带的模板,选择其中的 .net core WPF 创建Project, 取名为"CoreHiWPF"
在刚创建的Solution中使用vs自带的模板,选择其中的.net framework WPF添加新的project,取名为"HiWPF"
此时Solution中的文件目录为:
更改 .net core WPF项目 CoreHiWPF 的Assembly Name,使得两个项目一致
右键点击 .net core WPF项目 CoreHiWPF,选择最后的Properties, 然后将其Assembly Name 改为HiWPF
.
接着右键该项目,选"Edit CoreHiWPF.csproj"。
按下图加入如下相应代码:
<ItemGroup><ApplicationDefinition Include="..\HiWPF\App.xaml" Link="App.xaml"><Generator>MSBuild:Compile</Generator></ApplicationDefinition><Compile Include="..\HiWPF\App.xaml.cs" Link="App.xaml.cs" /></ItemGroup><ItemGroup><Page Include="..\HiWPF\MainWindow.xaml" Link="MainWindow.xaml"><Generator>MSBuild:Compile</Generator></Page><Compile Include="..\HiWPF\MainWindow.xaml.cs" Link="MainWindow.xaml.cs" /></ItemGroup>
根据评论区 @lindexi 的建议改进了一下,确实更合理一些:
此时项目配置文件CoreHiWPF.csproj
的内容为:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>netcoreapp3.0</TargetFramework><UseWPF>true</UseWPF><AssemblyName>HiWPF</AssemblyName></PropertyGroup><ItemGroup><Compile Update="..\HiWPF\**\*.xaml.cs"><DependentUpon>%(Filename)</DependentUpon></Compile></ItemGroup><ItemGroup><Page Include="..\HiWPF\**\*.xaml"><SubType>Designer</SubType><Generator>MSBuild:Compile</Generator></Page></ItemGroup></Project>
然后重新编译运行,再使用 XAML Designer
来修改,一切工作正常。
多谢 @lindexi 的改进建议~
确保 .net core WPF项目 CoreHiWPF 是启动项目
如果.net core WPF项目 CoreHiWPF 已经高亮,就不用管了。否则,需要选中项目 CoreHiWPF ,右击后选“Set As Start up project”.
试用 XAML Designer
此时关闭所有打开的文件,双击项目HiWPF
中的MainWindow.xaml
,就可以在XAML Designer中看到空白的WPF window了。
按需修改MainWindow.xaml和相应的.cs
接下来,我在MainWindow.xaml
的Grid
中加入了两行,一行放的是一个含有文本可换行的Label
,另一行是Exit
按钮。然后在Exit按钮上加入了Click
事件,在Window
上加入了Loaded
事件。
代码改完之后,F5
运行,最后的界面如下:
项目代码已推到github
,欢迎Fork
和star
.
传送门: .netCore-WPF_Designer , 如果觉得自己配置起来麻烦,也可以 clone 下来自己体验一把喔~
查看本人最近其他原创作品请移步 (想第一时刻阅读本人最新文章请在博客园上关注我):
解决vs2019中暂时无法为.net core WinForms使用 Designer 的临时方法
ASP.NET Core开发者成长路线图
中国.NET:各地微软技术俱乐部汇总(持续更新中...)
微软XAML Studio - WPF, Sliverlight, Xamarin, UWP等技术开发者的福音
微软正式发布Chromium Edge开发预览版
一大波开发者福利来了,一份微软官方Github上发布的开源项目清单等你签收
从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器
JS实现页面复制文字时自动加版权
开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程
改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)
当今最全面可用的微博分享组件嵌入方法(亲测2019年2月仍有效)
前端小白也能快速学会的博客园博客美化全攻略 - 附源码
史上最最靠谱,又双叒叒简单的基于MSXML的XML解析指南-C++
参考资料:
dotnet/samples - WPF Hello World sample with linked files
转载于:https://www.cnblogs.com/enjoy233/p/workaround_to_use_the_designer_in_wpf_Core_App.html
解决VS2019中.net core WPF 暂时无法使用 Designer 的临时方法相关推荐
- 解决 VS2019 中.net core WPF 暂时无法使用 Designer 的临时方法
以下方法来自于微软github开源项目WPF: dotnet/samples - WPF Hello World sample with linked files,请放心使用. 此篇文章是上篇文章解决 ...
- ] 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题
] 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题 参考文章: (1)] 解决myeclipse中新建javaweb工程,无法使用Web App Lib ...
- 解决vs2019中暂时无法为.net core WinForms使用 Designer 的临时方法
以下方法来自于微软github开源项目WinForms: dotnet/winforms - Using the Classic WinForms Designer in WinForms Core, ...
- 解决vs2019中vsvim无法使用ctrl+[的问题
在vs2019中安装vsvim后,在vsvim的设置中针对ctrl + [选择使用vsvim进行键位控制,但是仍然未能将该组合识别成esc.通过查询资料显示,需要在全局的键位设置中将涉及ctrl + ...
- php 计算字符串相邻最大重复数_php如何解决字符串中重复字符的次数并且排序输出的方法...
在php开发中有这样的需求.在指定的字符串中提取出每个单位字符出现的次数,并且倒序排序,截取前4个.留作使用.刚拿到这个需求的时候,我想了想,难道要把每个字符全部切割出来之后,一一的比对计算出相应的出 ...
- 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题
在myeclipse中新建的java web工程,lib中的jar包无法自动加载工程,不能像eclipse那样使用Web App Libraries. 即使添加了Web App Libraries这个 ...
- 解决PHP7中微信(小程序)mcrypt_module_open() 无法使用的解决方法
在PHP7 中 mcrypt_module_open()已经被 OPENSSL 取代. 当然你要是还是想用 mcrypt_module_open()就安装 mcrypt 扩展. 使用 openssl ...
- 解决VS2019中”This function or variable may be unsafe.”警告
原因分析: 这是vs为了防止内存泄漏的警告,大可不必理会(反正我们做题也影响不到 解决方法: 在最开头加一行#define _CRT_SECURE_NO_WARNINGS即可
- 解决IE6中PNG透明显示灰底的8种方法
方案一 - 滤镜解决方案 介绍:滤镜从IE4.0被微软正式引入,所以我们可以使用滤镜解决IE6的PNG透明问题,滤镜不仅可以实现目前CSS3的一些旋转效果而且还可以引入图片.注意:此方法在部分版本的I ...
最新文章
- RESTful架构和RESTful API设计总结
- cobaltstrike安装_CobaltStrike + Metasploit 组合安装
- 机房收费系统——总结
- 颜色空间缩减color space reduction
- 2018年12月19日
- 怎么判断间隙过渡过盈配合_什么是间隙配合、过盈配合、过渡配合?它们在汽车上有哪些应用?...
- shell三种 for循环方式
- 一种雷达和电子海图图像叠加方法
- 一小时看懂Ruby代码基本逻辑(自定义metasploit模块)
- python-多元线性回归模型
- 37.softmax多元逻辑回归
- 六年一轮回:大数据改变的,不仅仅是我的专业!
- java编译程序包不存在_在cmd下编译Java源文件文件出现程序包xxxx不存在
- 南京工程学院计算机英语,南京工程学院是什么意思
- CodeForces 1K-1400R-1324D
- vue3以及vue2自定义封装v-model
- C语言 - 运输公司对用户计算运输费用。路程(s km)越远,每吨·千米运费越低。(用switch实现)
- 雷鸣的游戏人生(六) --- 如何开始学习编程?
- 风靡全球3500万用户!realme真我8款潮玩新品亮相
- 带你一文读懂SaaS版多租户商城系统对多品牌企业的应用价值
热门文章
- leetcode-Basic Calculator-224
- 分治法求最大和最小值
- centos5.5 下面 lnmp环境遇到的小问题
- 关于 IHTMLDocument4 在 Delphi7.0 中不能编译的的解决方法
- Vue三大核心之三(插槽)
- 刘徽割圆法转化成matlab,刘徽割圆术动画演示
- 关于eclipse新建web项目,提示:The superclass javax.servlet.http.HttpServlet was not found on the Java解决办法...
- 算法与数据结构(九) 图论:最短路径问题
- 物联网大数据的爆发只是一个开始
- 使用JWT保护你的Spring Boot应用 - Spring Security实战