Today I introduce a new feature in Windows Store; a sharing application. In this article we learn another most common kind of content that a user might want to share with other people. Images and photos are the most common data format that people like to share. In my previous articles I showed you all the other data formats the user can share thourgh Windows Store Apps. You can find it on  http://www.c-sharpcorner.com 
In today's article we learn how to share an image with other people from the Windows Store Application. I will show you how to share an image from the app using XAML/C#. Here we use FileOpenPicker to enable the selection of an image and to share it over the internet.
Let's start to create an application step-by-step to share an image.
Step 1
Create a new Windows Store Application using C#.
Step 2
Here I design my MainPage.xaml with buttons and an image control.
<Page
    x:Class="SharingContent.ShareImage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:SharingContent"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"> 
    <Grid>
        <Grid.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="Black"/>
                <GradientStop Color="White" Offset="1"/>
            </LinearGradientBrush>
        </Grid.Background>
        <Grid Margin="0,100">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="auto"/>
            </Grid.RowDefinitions>
            <StackPanel Orientation="Horizontal" Grid.Row="2" Margin="0,30" HorizontalAlignment="Center">
                <Button x:Name="ShowUIButton" Content="Share" Click="ShowUIButton_Click" Width="121" />
            </StackPanel>
            <Button x:Name="SelectImageButton" Content="Select image" Grid.Row="0" Margin="0,30" HorizontalAlignment="Center" Click="SelectImageButton_Click" />
            <Image x:Name="ImageHolder" Height="300" Width="709" Stretch="None"   Grid.Row="1" HorizontalAlignment="Center" />
        </Grid>
    </Grid>
</Page>
Step 3
You need to add the right namespaces to your app so you can create and process the objects related to sharing. 
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.ApplicationModel.DataTransfer;
using Windows.UI.Xaml.Media.Imaging;
Step 4
Create the starting point for any sharing operation by getting the object of the DataTransferManager Class.
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
Step 5
In this step I create an event handler that handles the Share Charm of the application.
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager,
DataRequestedEventArgs>(this.ShareTextHandler);
Step 6
Here is the code for the event handler. Set some essential properties of the DataRequest object. This object contains the content that the user wants to share.
DataRequest requestData = e.Request;
requestData.Data.Properties.Title = "Share image Example";
requestData.Data.Properties.Description = "A demonstration that shows how to share text.";
Step 7
Now to add the main content to be shared. To add the image as a bitmap, use the SetBitmap method.
requestData.Data .SetStorageItems(imageItems);                
RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(this.imageFile);
requestData.Data.Properties.Thumbnail = imageStreamRef;
requestData.Data.SetBitmap(imageStreamRef);
Note:  It's recommended to use both SetBitmap and SetStorageItems for sharing a single image since the target app may only support one or the other.
Here is the full code that sets an image for a user to share:
using System;
using Windows.ApplicationModel.DataTransfer;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
 
namespace SharingContent
{
    public sealed partial class ShareImage : Page
    {
        public ShareImage()
        {
            this.InitializeComponent();
        }
        private StorageFile imageFile;
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
            dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager,
                DataRequestedEventArgs>(this.ShareTextHandler);
        }
        private void ShareTextHandler(DataTransferManager sender, DataRequestedEventArgs e)
        {
            if (this.imageFile != null)
            {
                DataRequest requestData = e.Request;
                requestData.Data.Properties.Title = "Share image Example";
                requestData.Data.Properties.Description = "A demonstration that shows how to share text.";
                List<IStorageItem> imageItems = new List<IStorageItem>();
                imageItems.Add(this.imageFile);
                requestData.Data.SetStorageItems(imageItems);
                RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(this.imageFile);
                requestData.Data.Properties.Thumbnail = imageStreamRef;
                requestData.Data.SetBitmap(imageStreamRef);
            }
        }
        private async void SelectImageButton_Click(object sender, RoutedEventArgs e)
        {
            FileOpenPicker imagePicker = new FileOpenPicker
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.PicturesLibrary,
                FileTypeFilter = { ".jpg", ".png", ".bmp", ".gif", ".tif" }
            };
            StorageFile pickedImage = await imagePicker.PickSingleFileAsync();
            if (pickedImage != null)
            {
                this.imageFile = pickedImage;
                // Display the image in the UI.
                IRandomAccessStream displayStream = await pickedImage.OpenAsync(FileAccessMode.Read);
                BitmapImage bitmapImage = new BitmapImage();
                bitmapImage.SetSource(displayStream);
                ImageHolder.Source = bitmapImage;
            }
        }
        private void ShowUIButton_Click(object sender, RoutedEventArgs e)
        {
            DataTransferManager.ShowShareUI();
        }
    }
}
Step 8 
Now your app is ready to share an image. Run it and select an image you want to share.
![File-Open-Picker-In-Windows-Store-Apps.jpg]()
Step 9
Click on the share button to activate the Share Charm.
![Share-Image-In-Windows-Store-Apps.jpg]()
Step 10
Enter the Email-Id of the recipients and click on the send button.
![Share-Content-In-Windows-Store-Apps.jpg]()