问题
I want to share two seperate images on two seperat button clicks. Until now I have used this code
protected override void OnNavigatedTo(NavigationEventArgs e)
{
//showPuzzle();
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.DataRequested);
}
private async void DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
DataRequest request = args.Request;
request.Data.Properties.Title = "c this";
request.Data.Properties.ApplicationName = "";
DataRequestDeferral deferral = request.GetDeferral();
// Make sure we always call Complete on the deferral.
try
{
StorageFile imagefile = await KnownFolders.PicturesLibrary.GetFileAsync("pic.jpg");
List<IStorageItem> storageItems = new List<IStorageItem>();
storageItems.Add(imagefile);
request.Data.SetStorageItems(storageItems);
}
finally
{
deferral.Complete();
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Windows.ApplicationModel.DataTransfer.DataTransferManager.ShowShareUI();
}
This works well for one button tap but how to do for sharing another image (say pic1.jpg)
回答1:
You can define a private member of the page which contains the name of the image to be shared and set this name on each button click. Example:
private string imageName = "pic.jpg";
private void Button_Click(object sender, RoutedEventArgs e)
{
imageName = "pic.jpg";
Windows.ApplicationModel.DataTransfer.DataTransferManager.ShowShareUI();
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
imageName = "pic1.jpg";
Windows.ApplicationModel.DataTransfer.DataTransferManager.ShowShareUI();
}
and in DataRequested() instead of hardcoding the name of the file, use the name from the private member
来源:https://stackoverflow.com/questions/25463373/share-two-different-things-in-windows-phone-8-1-c-sharp