选择文件夹对话框 WPF

2024-01-12

我开发了一个 WPF4 应用程序,在我的应用程序中,我需要让用户选择一个文件夹,应用程序将在其中存储某些内容(文件、生成的报告等)。

我的要求:

  • 能够查看标准文件夹树

  • 能够选择文件夹

  • WPF 外观和感觉,此对话框必须看起来像为 Windows Vista/7 而不是 Windows 2000 甚至 Win9x 设计的现代应用程序的一部分。

据我了解,直到 2010 年(.Net 4.0)都不会出现标准文件夹对话框,但也许 4.0 版本有一些变化?

或者我唯一能做的就是使用老式的WinForms对话?如果这是满足我需要的唯一方法,我怎样才能使它看起来更接近 Vista/7 风格而不是 Win9x?


Windows 演示基础 4.5 手册 http://www.packtpub.com/windows-presentation-foundation-4-5-cookbook/book由 Pavel Yosifovich 在第 155 页上的“使用通用对话框”部分中说:

“文件夹选择(而不是文件)怎么样?WPF OpenFileDialog 不支持这一点。一种解决方案是使用 Windows 表单的FolderBrowserDialog 类。另一个好的解决方案是使用 Windows API 代码包简要描述。”

I downloaded the API Code Pack from Windows® API Code Pack for Microsoft® .NET Framework http://archive.msdn.microsoft.com/WindowsAPICodePack Windows API Code Pack: Where is it? https://stackoverflow.com/q/24081665/109702, then added references to Microsoft.WindowsAPICodePack.dll and Microsoft.WindowsAPICodePack.Shell.dll to my WPF 4.5 project.

Example:

using Microsoft.WindowsAPICodePack.Dialogs;

var dlg = new CommonOpenFileDialog();
dlg.Title = "My Title";
dlg.IsFolderPicker = true;
dlg.InitialDirectory = currentDirectory;

dlg.AddToMostRecentlyUsedList = false;
dlg.AllowNonFileSystemItems = false;
dlg.DefaultDirectory = currentDirectory;
dlg.EnsureFileExists = true;
dlg.EnsurePathExists = true;
dlg.EnsureReadOnly = false;
dlg.EnsureValidNames = true;
dlg.Multiselect = false;
dlg.ShowPlacesList = true;

if (dlg.ShowDialog() == CommonFileDialogResult.Ok) 
{
  var folder = dlg.FileName;
  // Do something with selected folder string
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择文件夹对话框 WPF 的相关文章

随机推荐

  • R 无法解析为变量(新的 android 项目)[重复]

    这个问题在这里已经有答案了 新项目也会发生这种情况 gen 文件夹是空的 Activity main xml 文件中没有错误 我努力了 项目 gt 清洁 项目 gt 属性 gt 检查android版本 项目 gt 构建 重新安装eclips
  • 在网络浏览器中,onblur 和 onfocusout 之间有什么区别?

    如果是一样的话 为什么会发生两次这样的事件呢 如您所知 onBlur如果某个元素具有焦点 但失去焦点 则会触发该事件 The 焦点移出时在这种情况下会触发事件 但如果任何子元素失去焦点也会触发 例如 您有一个具有特殊格式的 div 因为人们
  • 将 Intent 过滤器操作传递给 Audible

    我正在尝试从应用程序内打开 Audible 并在启动时开始播放 Audible Audible 启动正常 但无法开始播放 有声清单文件包含
  • Cassandra 中的列排序

    当我在 CQL 中创建表时 是否需要精确确定列的顺序NOT在主键和NOT聚类列 CREATE TABLE user a ascii b ascii c ascii PRIMARY KEY a 它相当于吗 CREATE TABLE user
  • Glide - 向请求添加标头

    有没有一种方法可以在下载图像时添加自定义标头以进行请求 我可以在 Glide 中使用 volley 或 okhttp 我尝试在okhttpclient中的cookiemanager中添加cookie 但没有帮助 Glide 中有调试请求响应
  • ApplicationInsight 导致网站在启动时挂起

    目前有人成功使用 ApplicationInsight 吗 我除了试图让它发挥作用之外什么也没遇到 首先 我遇到了很多问题 VS 拒绝使用 ApplicationInsight 创建新网站以及将 ApplicationInsight 添加到
  • Oracle 中的限定子句

    我正在从事 Teradata 到 Oracle 的迁移项目 我如何修改在 Teradata 中使用 QUALIFY 的以下查询 查询1 SELECT S ID as Id S MP CD as Code S GM CD as GmCode
  • 为什么我的函数没有按预期在文档加载时运行?

    这段代码应该设置元素的高度 但是没有添加任何样式 我错过了一些明显的东西吗 function setGround document getElementById content style height 40px document onlo
  • 如何在 Nginx 中使用 .htaccess 文件?

    我目前正在将我的网站从 Apache 迁移到nginx 但是我的 htaccess文件不工作 我的网站位于 usr share nginx html mywebsite文件夹 我该如何使用 htaccess in my nginx serv
  • 我可以告诉绑定重定向始终使用最新的可用版本吗?

    有一个 ASP NET 应用程序severalWeb Config 文件中的条目采用以下格式
  • 为什么 grails 操作应该声明为方法而不是闭包,这有什么区别?

    Grails 2 0 中的新增内容http grails org doc 2 0 0 RC1 guide introduction html whatsNew http grails org doc 2 0 0 RC1 guide intr
  • 如何设置SWT按钮前景色?

    SWT Button 类有一个setForeground Color 方法 但它似乎没有效果 该方法实际上是在 Button 的超类上 javadoc 说这个方法是一个提示 可能会被平台覆盖 我的平台是Windows 这是否意味着无法在 W
  • 将字符串转换为 int (但前提是确实是 int)

    在大学里 我被问到我们的程序是否检测到从命令行参数输入的字符串是否是一个整数 但它没有检测到 Program 3 7 现在我想知道如何检测到这一点 因此输入例如aatoi 检测到的无效 但输入例如3 6应该是无效的 但 atoi 会将其转换
  • Ruby on Rails 显示带有 image_tag src 的图像

    我的里面有一张图片app assets images文件夹 我在视图页面中尝试显示图像 当我在本地主机中加载页面时 我的图像仅显示 assets 在其 src 路径中 img alt Assets src assets 我不明白为什么会出现
  • 如何更改 EKS 中 kube-scheduler 的行为?

    我是 Kubernetes 新手 对设置它完全陌生EKS 我正在努力实现共享GPU在多个 Pod 之间 但是为了查看一些文档和文章 我发现我应该更新kube scheduler configuration带有参数 然后我可以进行必要的更改以
  • 未找到自制程序的 gpg-agent

    我正在尝试安装gpg agent 但我收到一个错误 该公式不存在 brew install gpg agent Error No available formula with the name gpg agent gt Searching
  • 将 RichTextBox 中的制表符转换为空格

    I have a WinForms application with a RichTextBox control on the form Right now I have the AcceptsTabs property set to tr
  • R 中的 Predict.lm() - 如何获得拟合值周围的非常量预测带

    所以我目前正在尝试绘制线性模型的置信区间 我发现我应该为此使用 Predict lm 但我在真正理解该函数时遇到一些问题 并且我不喜欢在不知道发生了什么的情况下使用函数 我找到了几个关于这个主题的操作方法 但只有相应的 R 代码 没有真正的
  • Nunjucks 中的 Javascript 函数

    所以我在 Nunjucks 文档中找到了这个 函数调用 如果您已将 JavaScript 方法传递给模板 则可以像平常一样调用它 foo 1 2 3 但我似乎无法工作 我尝试将我的函数放在 html 页面上
  • 选择文件夹对话框 WPF

    我开发了一个 WPF4 应用程序 在我的应用程序中 我需要让用户选择一个文件夹 应用程序将在其中存储某些内容 文件 生成的报告等 我的要求 能够查看标准文件夹树 能够选择文件夹 WPF 外观和感觉 此对话框必须看起来像为 Windows V