Xaml 显示除“以外的内容”;“所有文件”;在非';t筛选以显示所有文件

Xaml 显示除“以外的内容”;“所有文件”;在非';t筛选以显示所有文件,xaml,uwp,c++-winrt,fileopenpicker,Xaml,Uwp,C++ Winrt,Fileopenpicker,在我正在编写的winrt项目中,我正在通过Windows::Storage::Pickers::FileOpenPicker显示一个打开的文件对话框。当我在选择器上设置FileTypeFilter属性时,它可以工作,但显示的名称仍然是“所有文件” 我在docs.microsoft.com上看到,FileSavePicker有一个FileTypeChoices属性,它保存一个映射而不是一个向量,允许保存选择器为每种类型命名,但我只能找到文件打开选择器的FileTypeFilter向量。即使是微软示

在我正在编写的winrt项目中,我正在通过Windows::Storage::Pickers::FileOpenPicker显示一个打开的文件对话框。当我在选择器上设置FileTypeFilter属性时,它可以工作,但显示的名称仍然是“所有文件”

我在docs.microsoft.com上看到,FileSavePicker有一个FileTypeChoices属性,它保存一个映射而不是一个向量,允许保存选择器为每种类型命名,但我只能找到文件打开选择器的FileTypeFilter向量。即使是微软示例的屏幕截图也会显示“所有文件”,即使它经过过滤

我知道一定有办法做到这一点,因为我见过很多程序都有能够显示名称的文件打开选择器


有人知道如何让打开的文件选择器显示默认的“所有文件”以外的内容吗

注释:我已经做C++几年了,但是我对C++还是WRET还是很新的(就像在这周刚学过WrrT一样),所以我仍然不知道如何做很多基本的事情,比如建立一个正确的文件选择器< /P> 这是创建并打开对话框的代码:

//安德鲁·普拉特2021
//MainPage.cpp
#包括“pch.h”
#包括“MainPage.h”
#包括“MainPage.g.cpp”
#包括“winrt/Windows.Storage.h”
#包括“winrt/Windows.Storage.Pickers.h”
#包括“winrt/Windows.Storage.Pickers.Provider.h”
使用名称空间winrt;
使用名称空间Windows::Foundation;
使用名称空间Windows::Foundation::Collections;
使用名称空间Windows::UI::Xaml;
使用名称空间Windows::UI::弹出窗口;
使用名称空间Windows::UI::Xaml::控件;
使用名称空间Windows::Storage;
使用名称空间Windows::Storage::Pickers;
命名空间winrt::AltBrickUi::实现
{
主页::主页()
{
初始化组件();
}
}
winrt::fire_and_忘记winrt::AltBrickUi::implementation::MainPage::easyAlert(常量IInspectable&title,常量IInspectable&msg,常量winrt::hstring&closeText)
{
ContentDialog警报{ContentDialog()};
警报。标题(标题);
警报内容(msg);
alert.CloseButtonText(closeText);
alert.showsync();
co_返回;
}
void winrt::AltBrickUi::implementation::MainPage::MenuFlyoutItem_Click(winrt::Windows::Foundation::IInspectable const&sender,winrt::Windows::UI::Xaml::RoutedEventArgs const&e)
{
showJsonFileOpenPicker();
}
winrt::fire_and_忘记winrt::AltBrickUi::implementation::MainPage::showJsonFileOpenPicker()
{
//创建文件选择器
选择器::FileOpenPicker选择器{};
ViewMode(Pickers::PickerViewMode::List);
picker.FileTypeFilter().ReplaceAll({winrt::to_hstring(L.json”)});
//打开对话并获取文件
StorageFile pickedFile=co_wait picker.PickSingleFileAsync();
if(pickedFile)
easyAlert(winrt::box_值(L“File picked!”),winrt::box_值(pickedFile.DisplayName()),L“Cool”);
其他的
easyAlert(winrt::box_值(L“未拾取”),NULL,L“OK”);
co_返回;
}
下面是我运行文件选择器时的一个片段:


文件选择器的一个示例,显示我需要它的方式(这一个来自记事本):

您提到的情况总是发生在桌面应用程序中,例如wpf应用程序。请阅读了解更多


我不得不说uwp没有提供这样的api来实现这一点。如果您确实需要此功能,请使用Windows反馈中心应用程序提交您的功能要求。

是的,看起来像对话框。筛选器可以做到这一点。我可能会像你说的那样去反馈中心;同时,也许我可以稍微降低一点级别,直到它成为api的一部分。谢谢