我需要在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在当前上下文中不存在
您需要从代码隐藏区的顶部删除using System.Windows.Forms;
,然后将其替换为using System.Windows;
。
具有前一行会导致您的Window
被编译为System.Windows.Forms.Window
(WinForms窗口),而不是System.Window.Window
(WPF窗口。)>
然后您将需要将完整的名称空间放入类型声明中,因此您的代码将成为:
WPF没有本地的FolderBrowserDialog控件。莫名其妙,我知道。
您可以使用上面显示的winforms版本,也可以尝试使用ookii.dialogs这样的第三方控件
我得到了答案。当我在WPF中使用folderbrowserdialog框时。我需要在ManageNuGetPackage中下载FolderBrowserDialogEx.dll。下载软件包后。 FolderBrowserDialog框工作正常。试试这个。
使用语句尝试这些: