如何解决WPF中打开文件对话框筛选功能失效问题
WPF OpenFileDialog筛选功能失效问题解决
你的代码核心问题是调用ShowDialog()的顺序错误——在对话框已经弹出后才设置Filter和Title,这些配置根本不会生效,导致筛选功能失效。
修正后的代码
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); // 先设置所有对话框属性 openFileDialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory; // 替换Windows.Forms的API,更贴合WPF openFileDialog.Filter = "Lua scripts (*.lua)|*.lua|Txt Scripts (*.txt)|*.txt"; // 修正筛选器里的多余* openFileDialog.Title = "Open Scripts"; // 标题和对话框功能匹配 // 最后调用ShowDialog()弹出对话框 Nullable<bool> result = openFileDialog.ShowDialog(); if (result == true) { TextEditor.Text = File.ReadAllText(openFileDialog.FileName); }
额外注意事项
- 筛选器格式必须严格遵循
显示文本 (*.扩展名)|*.扩展名的规则,你原代码里(*.txt*)多了一个星号,会导致筛选逻辑异常 - 避免在WPF项目中引用
System.Windows.Forms获取启动路径,用AppDomain.CurrentDomain.BaseDirectory或Environment.CurrentDirectory更合适 - 对话框标题建议和功能匹配,打开文件用"Open Scripts"比"Save Scripts"更合理
内容的提问来源于stack exchange,提问作者Tim Joey
相关产品推荐
相关产品推荐

