.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 的中文資料很少的情況下,相信對於新手還是有一定幫助的。故此記錄,希望可以幫助到您。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM