gpt4 book ai didi

c# - 从 UICommand/MessageDialog 启动 FilePicker 或 FolderPicker

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:38 30 4
gpt4 key购买 nike

当我的 Windows 应用商店应用程序启动时,我想提示用户使用 FolderPicker 选择本地存储文件夹并使用 FutureAccessList 保存它。我使用的提示符是 MessageDialog

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);

var messageDialog = new MessageDialog("Please pick a folder where you'd like to store your documents", "Choose storage");
messageDialog.Commands.Clear();
messageDialog.Commands.Add(new UICommand("OK", async (command) =>
{
await PickFolder();
});
await messageDialog.ShowAsync();
}

private async Task PickFolder()
{
FolderPicker folderPicker = new FolderPicker();
folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add(".txt");
folder = await folderPicker.PickSingleFolderAsync();
// lets just ignore cancellations for now
StorageApplicationPermissions.FutureAccessList.AddOrReplace("MyFolder", folder);
}

此代码无效 - 我收到拒绝访问错误

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

我认为使用 messageDialog.ShowAsync() 足以解决这个问题,但它似乎不起作用。有任何想法吗?

我是否必须放弃漂亮的 WinRT messageDialogs 以支持自产的东西?

最佳答案

MessageDialog 的命令在关闭之前触发,并且当第一个模式对话框仍在运行时您无法打开第二个模式对话框。

您需要将对 PickFolder 的调用延迟到 MessageDialog 完成之后。由于无论如何您都在等待它,因此您可以在 ShowAsync 之后调用它。这里没有实际意义,因为 ok 是唯一的选项,但您可以打开选择的命令以在多个选项之间进行选择。

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);

var messageDialog = new MessageDialog("Please pick a folder where you'd like to store your documents", "Choose storage");
messageDialog.Commands.Clear();
UICommand okCommand = new UICommand("Ok");
messageDialog.Commands.Add(okCommand);
var cmd = await messageDialog.ShowAsync();
if (cmd == okCommand)
{
await PickFolder();
}
}

另一种选择是在调用 PickFolder 之前在 UICommand 处理程序中添加延迟(例如,通过在 Dispatcher.RunAsync block 中调用 PickFolder),以便 MessageDialog 可以关闭。

关于c# - 从 UICommand/MessageDialog 启动 FilePicker 或 FolderPicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593106/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com