При запуске приложения для Windows Store я хочу предложить пользователю выбрать локальную папку хранения с помощью FolderPicker
и сохранить ее с помощью FutureAccessList
. Приглашение, которое я использую, - MessageDialog
.Запуск FilePicker или FolderPicker из UICommand/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()
было достаточно, чтобы обойти эту проблему, но это не похоже на работу. Есть идеи?
Должен ли я отказаться от симпатичного сообщения WinRTDialogs в пользу чего-то домашнего роста?
Попробуйте создать сообщениеDialog в событии OnLoaded. – crea7or
@ crea7or nope, тот же результат – roryok
Произошла ли ошибка до появления сообщения или после нажатия «ОК»? – micbobo