zoukankan      html  css  js  c++  java
  • .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 的中文资料很少的情况下,相信对于新手还是有一定帮助的。故此记录,希望可以帮助到您。

  • 相关阅读:
    win10与ubuntu下演示运行.net core rc2 1.0.0.3002702程序
    win10系统iis下部署搭建https (ssl/tls)本地测试环境
    HTTP 错误 500.19
    win8.1安装Team Function Server 2013
    WCF在编译出现 “错误 3 命令“时解决
    EXCEL中,在其中列 前面or后面加一个“元”字的技巧
    职业经理感言一
    工作小应用:EXCEL查找两列重复数据
    C#设置与获取目录权限(.net控制ACL)
    WPF中窗口控件的跨线程调用
  • 原文地址:https://www.cnblogs.com/hsxian/p/11708664.html
Copyright © 2011-2022 走看看