For Windows Phone you should follow this How to documentation. The workflow has changed quite a bit from Silverlight apps. Your app no longer resumes like it used to with the old Tasks.
You don't need to follow all of the steps in the doc, but an important piece is to over the OnActivated
method within App.xaml.cs. Within there you will call your ContinueFileSavePicker method.
Here is a sample that you can download as well that should help.
Update
If you want to save a file that you will be shipping with your app, try the following code to initialize the picker
// Get the local file that is shipped with the app
// file but be "content" and not "resource"
string path = @"AssetsAudioSound.mp3";
StorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFile file = await folder.GetFileAsync(path);
// Show the picker
FileSavePicker savePicker = new FileSavePicker();
// Set the file that will be saved
savePicker.SuggestedSaveFile = file;
savePicker.SuggestedFileName = "Sound";
savePicker.FileTypeChoices.Add("MP3", new List<string>() { ".mp3" });
savePicker.PickSaveFileAndContinue();
You also need to make sure that you listen to the ContractActivated event of the PhoneApplicationService. This event is fired (in 8.1 Silverlight apps) when the app returns from the picker. This is where you want to call your ContinueFileSavePicker method. If you wanted, you could always just put the logic in there.
Subscribe to the event in xaml:
<Application.ApplicationLifetimeObjects>
<!--Required object that handles lifetime events for the application-->
<shell:PhoneApplicationService
ContractActivated="Application_ContractActivated"
Launching="Application_Launching" Closing="Application_Closing"
Activated="Application_Activated" Deactivated="Application_Deactivated"/>
</Application.ApplicationLifetimeObjects>
And in the App.xaml.cs:
private async void Application_ContractActivated(object sender, Windows.ApplicationModel.Activation.IActivatedEventArgs e)
{
var args = e as FileSavePickerContinuationEventArgs ;
if (args != null)
{
StorageFile file = args.File;
if (file != null)
{
// Prevent updates to the remote version of the file until we finish making changes and call CompleteUpdatesAsync.
CachedFileManager.DeferUpdates(file);
// write to file
await FileIO.WriteTextAsync(file, file.Name);
// Let Windows know that we're finished changing the file so the other app can update the remote version of the file.
// Completing updates may require Windows to ask for user input.
FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);
}
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…