Я использую этот код, чтобы выбрать папку, и он отлично работает.
FolderPicker folderPicker = new FolderPicker();
folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");
StorageFolder pickedFolder = await folderPicker.PickSingleFolderAsync();
Но когда я использую его в определенной функции, я не знаю, почему он вдруг победил 'больше не работает.
Итак, именно это я и делаю: от нажатия кнопки до всплывающего окна FolderPicker.
Нажатие кнопки:
private async void BRechercherPoste_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
if (tbCodePoste != null && !tbCodePoste.Text.Equals(""))
{
string codePoste = tbCodePoste.Text;
//recuperation des infos du poste
await ViewModel.getPosteInformationsAsync(codePoste);
}
}
... затем ViewModel.getPosteInformationsAsync
:
public async Task getPosteInformationsAsync(string posteNumber)
{
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
await setupFiles();
[some code not interferring here]
}
... setupFiles:
public static async Task setupFiles()
{
//checks for the first time app launch
if (!await checkIfPosteFolderPresentAsync())
{}
PosteChoiceDialog dialogChoice = new PosteChoiceDialog();
//showing a dialog with 2 choices
await dialogChoice.ShowAsync();
}
[rest of the code (working)]
}
Таким образом, диалоговое окно показывает 2 варианта, один из которых загружает данные по умолчанию в LocalFolder
, а второй позволяет вам выбрать персональныйпапка для загрузки данных в LocalFolder
.
Функция, которая срабатывает при выборе 2-го варианта, является следующей:
public static async Task loadCustomPosteInformation()
{
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
FolderPicker folderPicker = new FolderPicker();
folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");
//---Here the folder picker open and closes instantly for no reason---//
StorageFolder pickedFolder = await folderPicker.PickSingleFolderAsync();
//--------------------------------------------------------------------//
//Because it's not working the rest of the function crashes
if (pickedFolder == null)
{
await loadDefaultPosteInformation();
}
else
{
var files = await pickedFolder.GetFilesAsync();
StorageFolder postes = await localFolder.CreateFolderAsync("Postes");
foreach (StorageFile f in files)
{
await f.CopyAsync(postes);
}
}
}
Поэтому я детализировал все, что мог, потому что искалнесколько часов, почему он зависал, и я действительно не понимаю, почему FolderPicker
мгновенно закрывается только в этой конкретной функции.