.net core 3.0 WPF中使用FolderBrowserDialog
前言
随着.net core 3.0 的发布,WPF 也可以在 core 平台上使用了。当前的 WPF 不支持跨平台,仅能够在 Windows 平台上使用。如果想体验 WPF 跨平台开发,可以访问开源项目Avalonia。不过当前的 WPF 已经可以满足我们的大部分使用需求了,毕竟使用 core 开发起来很爽。这意味着不必在用户的机器上安装 .net framework 依赖环境,以独立的方式发布的软件,复制到任意一台 Windows 上就可以直接运行。
启程
当我们带着激动的心情开始新的 WPF 征程时,发现文件夹浏览器对话框(FolderBrowserDialog)无法使用了,就算我们输入引用using System.Windows.Forms;也发现编辑器报错:

尝试像以往一样向引用中添加程序集时,发现引用管理器中已经没有了程序集这个选项了。

在网上浏览半天,也没有发现什么有用的信息。不过在 dotnet/wpf 的一个issues中提及了这个问题。在该讨论中说可以使用 Windows forms 中的文件夹对话框,却没有说怎么使用。而这正是我们遇到的问题。
解决
我们不妨换一个思路来看待问题,查看源项目文件是怎样组成的。打开 wpf 项目文件,发现里面极其简洁。
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
这也是 core 3.0 的一大改变,所有的默认引用将不再显示出现在项目文件中。而我们查看 forms 项目文件时也是如此,唯一的区别就是开关UseWPF改为了<UseWindowsForms>true</UseWindowsForms>。尝试将该开关写入 wpf 项目文件中后,发现编辑器报错取消了。并且文件夹对话框也可以使用了。这意味 wpf 和 forms 依旧可以共存。而使用者完全可以从forms项目改变开关就可以转为wpf项目。
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
private void OpenFolderDialog()
{
var fbd = new FolderBrowserDialog();
fbd.ShowDialog();
}
}
总结
本文章虽然极其简单,但在现今 core 3.0 的中文资料很少的情况下,相信对于新手还是有一定帮助的。故此记录,希望可以帮助到您。
.net core 3.0 WPF中使用FolderBrowserDialog的更多相关文章
- ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介
参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view ...
- NET Core 3.0 项目中使用 AutoFac
.net core 3.1 今天已正式发布,3.1跟3.0差别不是很大,主要是对 3.0一小部分修复和完善,最重要的是.NET Core 3.1是长期支持(LTS)版本,建议大家升级. .net co ...
- ASP.NET Core 5.0 MVC中的 Razor 页面 介绍
Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 ...
- ASP.NET Core 5.0 MVC中的视图分类——布局视图、启动视图、具体视图、分部视图
一.创建MVC应用程序 创建后的项目 二.(全局性)启动视图 _ViewStart.cshtml 顾名思义,就是在View开始执行之前执行,而且是每一个View, 它的预设内容是 @{ Layout ...
- .NET Core 2.0 单元测试中初识 IOptionsMonitor<T>
在针对下面设置 CookieAuthenticationOptions 的扩展方法写单元测试时遇到了问题. public static IServiceCollection AddCnblogsAut ...
- .Net Core 3.0 MVC 中使用 SqlSugar ORM框架
介绍 SqlSugar 是一款简单易用的ORM ,在国内市场占有率也比较高, 在今年10月份官网改版后 提供了完整的服务,让您的项目没有后顾之忧 下载地址 :https://github.com/s ...
- ASP.Net Core 5.0 MVC中AOP思想的体现(五种过滤器)并结合项目案例说明过滤器的用法
执行顺序 使用方法,首先实现各自的接口,override里面的方法, 然后在startup 类的 ConfigureServices 方法,注册它们. 下面我将代码贴出来,照着模仿就可以了 IActi ...
- 如何在.Net Core 2.0 App中读取appsettings.json
This is something that strangely doesn’t seem to be that well documented and took me a while to figu ...
- .Net Core 2.0 App中读取appsettings.json
引用: Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.FileExtensionsMicrosoft.Ext ...
随机推荐
- STA——multicycle path
之前去地平线面试的时候被问到了multicycle path的一点问题,其实这个问题我应该知道,看过<Constraining Designs for Synthesis and Timing ...
- 计算2个GPS坐标的距离
本文转自 http://blog.csdn.net/ztp800201/article/details/44676867 Java 计算两个GPS坐标点之间的距离 1. Lat1 Lung1 表示A点 ...
- 时钟AnalogClock和DigitalClock
<AnalogClock android:layout_width="fill_parent" android:layout_height="fill_parent ...
- .Net基础篇_学习笔记_第四天_switch-case02
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 使用HTML制作网页
网页基本信息[编码格式] gb2312:简体中文,一般用于包含中文和英文的页面 ISO-885901:纯英文,一般用于只包含英文的页面 big5:繁体中文,一般用户带有繁体字的页面 utf-8:国际通 ...
- java 手机号码+邮箱的验证
import java.util.regex.Pattern; //导入的包 1:String REGEX_MOBILE = "^((17[0-9])|(14[0-9])|(13[0-9]) ...
- asp.net配置全局应用程序类 巧妙达到定时生成静态页面
//在项目里添加一个"全局应用程序类(Global Application Class)",在里面写这样的代码: public class Global : System.Web. ...
- 52 (OC)* 苹果手机各种尺寸详细表以及iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配
iPhone设备 物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的. 代数 设备 操作系统 逻辑分辨率(point) 物理分辨率(pixel) 屏幕尺寸(对角线长度) 缩放因子 iPhone ...
- 03:H.264编码原理以及视频压缩I、P、B帧
一:前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中, 一般有差别的像素只有1 ...
- EasyJson 发布
JSON库很常用了,现在开源的JSON库也有很多.但是我们仍然面临下列问题 1)时不时的爆出这个Json库出现漏洞,那个json库出现漏洞.一旦出现漏洞只能升级,想切换JSON都不成. 2)一个项目中 ...