如何在wpf中使用文件夹浏览器对话框

问题描述 投票:0回答:4

我需要在WPF应用程序中添加FolderBrowserDialog。我知道一种方法是添加到System.Windows.Forms.dll,但是这种方法无法正常工作。

我的XAML:

<Window x:Class="Sample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        WindowState="Normal"
        ResizeMode="NoResize"
        mc:Ignorable="d"
        Title="MainWindow" Height="600" Width="600">
    <Grid>
        <TextBox Height="30" width="80" Name="TextBox1"/>
        <Button Height="50" Width="50" Content="Browse" Click="btn_Click"/>
    </Grid>
</Window>

隐藏我的代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Sample
{
public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }
        private void btn_Click(object sender, RoutedEventArgs e)
        {
            FolderBrowserDialog folderDialog = new FolderBrowserDialog();
            folderDialog.SelectedPath = "C:\\";

            DialogResult result = folderDialog.ShowDialog();
            if (result.ToString() == "OK") 
                textBox1.Text = folderDialog.SelectedPath;
         }
    }
}

我在依存关系中添加了System.Windows.Forms.dll。添加System.Windows.Forms.dll后,FolderBrowserDialog类可以正常工作,但是InitializeComponent();显示错误:

InitializeComponent在当前上下文中不存在

c# wpf wpf-controls
4个回答
1
投票

您需要从代码隐藏区的顶部删除using System.Windows.Forms;,然后将其替换为using System.Windows;

具有前一行会导致您的Window被编译为System.Windows.Forms.Window(WinForms窗口),而不是System.Window.Window(WPF窗口。)>

然后您将需要将完整的名称空间放入类型声明中,因此您的代码将成为:


0
投票

WPF没有本地的FolderBrowserDialog控件。莫名其妙,我知道。

您可以使用上面显示的winforms版本,也可以尝试使用ookii.dialogs这样的第三方控件


0
投票

我得到了答案。当我在WPF中使用folderbrowserdialog框时。我需要在ManageNuGetPackage中下载FolderBrowserDialogEx.dll。下载软件包后。 FolderBrowserDialog框工作正常。试试这个。


0
投票

使用语句尝试这些:

© www.soinside.com 2019 - 2024. All rights reserved.