private async Task UpdatePhotoClass(string v_sFile, int v_iIDKey, string v_sComment)
        {
            try
            {
                DisplayPhoto cPhoto = new DisplayPhoto();
                cPhoto.IDKey    = v_iIDKey;
                cPhoto.NoteText = v_sComment;
                cPhoto.FilePath = v_sFile;
                cPhoto.FileUri  = new Uri(v_sFile, UriKind.RelativeOrAbsolute);
                Main.DisplayImageDetails didImage = await this.ReturnDisplayImageFromFile(v_sFile);

                cPhoto.ImageSource = didImage.wbBitmap;
                cPhoto.ImageWidth  = didImage.dOriginalWidth;
                cPhoto.ImageHeight = didImage.dOriginalHeight;

                cPhoto.SubProjectNo = this.m_cProject.SubProjectNo;
                //cPhoto.GridHeight = this.gvPhotos.ActualHeight;
                //cPhoto.GridWidth = this.gvPhotos.ActualWidth;
                cPhoto.UniqueID = Environment.TickCount;

                await Task.Delay(2);//Wait 2 milliseconds so tick count will always be unique when used.

                Main.p_cProjectPhotos.Add(cPhoto);

                //DisplayUI(Main.p_cProjectPhotos);
                DisplayUI(cPhoto);
                //this.gvPhotos.ItemsSource = cMain.p_cProjectPhotos;
                //this.gvPhotos.SelectedIndex = this.gvPhotos.Items.Count - 1;
            }
            catch (Exception ex)
            {
            }
        }
        /// <summary>
        /// Return display image from file.
        /// </summary>
        /// <param name="v_sFilePath"></param>
        /// <returns></returns>
        private async Task <Main.DisplayImageDetails> ReturnDisplayImageFromFile(string v_sFilePath)
        {
            Main.DisplayImageDetails didReturn = new Main.DisplayImageDetails();
            try
            {
                //Get image.
                object bmpImage = await DependencyService.Get <IMain>().ReturnImageFromFile(v_sFilePath);

                //Record original dimensions
                didReturn.dOriginalWidth  = DependencyService.Get <IMain>().ReturnWidthBitmapImage(bmpImage);
                didReturn.dOriginalHeight = DependencyService.Get <IMain>().ReturnHeightBitmapImage(bmpImage);

                //Fetch maximum image dimension for preview.
                decimal dMaxDimension = Convert.ToDecimal(DependencyService.Get <IMain>().GetAppResourceValue("Max_Image_Dimension_Preview"));

                //Work out new dimensions for displaying in grid.
                Size szNewDimensions = Main.ReturnAspectRatio(didReturn.dOriginalWidth, didReturn.dOriginalHeight, dMaxDimension);

                //Resize image.
                didReturn.wbBitmap = await DependencyService.Get <IMain>().ReadAndResizeImageFile(v_sFilePath, szNewDimensions);

                //
                return(didReturn);
            }
            catch (Exception ex)
            {
                //cMain.ReportError(ex, cMain.GetCallerMethodName(), string.Empty);
                return(didReturn);
            }
        }