/// <summary>
        /// Unpins a secondary tile from the start screen.
        /// </summary>
        private async Task OnUnPinStopToStartPageCommandExecuted(object arg1, object arg2)
        {
            IPinablePageControl pinnablePageControl = arg2 as IPinablePageControl;

            if (pinnablePageControl != null)
            {
                this.IsCurrentControlPinned = !await ServiceRepository.TileService.UnPinSecondaryTileAsync(pinnablePageControl);
            }
        }
        /// <summary>
        /// Returns true if the page control is currently pinned.
        /// </summary>
        public async Task <bool> PageControlIsCurrentlyPinned(IPageControl pageControl)
        {
            IPinablePageControl pinnablePageControl = pageControl as IPinablePageControl;

            if (pinnablePageControl != null)
            {
                // See if we're pinned to start:
                var query = from tile in await SecondaryTile.FindAllAsync()
                                where string.Equals(pinnablePageControl.TileId, tile.TileId, StringComparison.OrdinalIgnoreCase)
                            select tile;

                return(query.Count() > 0);
            }

            return(false);
        }
        /// <summary>
        /// Unpins a secondary tile to the start screen.
        /// </summary>
        public async Task <bool> UnPinSecondaryTileAsync(IPinablePageControl pinnablePageControl)
        {
            var secondaryTile = (from tile in await SecondaryTile.FindAllAsync()
                                 where string.Equals(pinnablePageControl.TileId, tile.TileId, StringComparison.OrdinalIgnoreCase)
                                 select tile).FirstOrDefault();

            if (secondaryTile != null)
            {
                if (await secondaryTile.RequestDeleteAsync())
                {
                    await pinnablePageControl.UpdateTileAsync(false);

                    return(true);
                }
            }

            return(false);
        }
        /// <summary>
        /// Pins a secondary tile to the start screen.
        /// </summary>
        public async Task<bool> PinSecondaryTileAsync(IPinablePageControl pinnablePageControl)
        {
            Uri logoUri = new Uri("ms-appx:///Assets/Logo.scale-100.png");
            Uri smallLogoUri = new Uri("ms-appx:///Assets/SmallLogo.scale-100.png");
            Uri wideLogoUri = new Uri("ms-appx:///Assets/WideLogo.scale-100.png");
            Uri largeLogoUri = new Uri("ms-appx:///Assets/Square310x310Logo.scale-100.png");

            SecondaryTile secondaryTile = new SecondaryTile();
            secondaryTile.TileId = pinnablePageControl.TileId;
            secondaryTile.DisplayName = pinnablePageControl.TileName;
            secondaryTile.Arguments = pinnablePageControl.GetParameters().ToQueryString();

            secondaryTile.VisualElements.ShowNameOnSquare150x150Logo = true;
            secondaryTile.VisualElements.ShowNameOnWide310x150Logo = true;
            secondaryTile.VisualElements.ShowNameOnSquare310x310Logo = true;
            secondaryTile.VisualElements.Square30x30Logo = smallLogoUri;
            secondaryTile.VisualElements.Square150x150Logo = logoUri;
            secondaryTile.VisualElements.Wide310x150Logo = wideLogoUri;
            secondaryTile.VisualElements.Square310x310Logo = largeLogoUri;
            secondaryTile.VisualElements.ForegroundText = ForegroundText.Light;

            if (await secondaryTile.RequestCreateAsync())
            {
                try
                {
                    await pinnablePageControl.UpdateTileAsync(true);
                    
                }
                catch
                {
                    // In case of network error, don't bring down the app. Nothing we can do here...
                    return false;
                }
            }

            return true;
        }
        /// <summary>
        /// Pins a secondary tile to the start screen.
        /// </summary>
        public async Task <bool> PinSecondaryTileAsync(IPinablePageControl pinnablePageControl)
        {
            Uri logoUri      = new Uri("ms-appx:///Assets/Logo.scale-100.png");
            Uri smallLogoUri = new Uri("ms-appx:///Assets/SmallLogo.scale-100.png");
            Uri wideLogoUri  = new Uri("ms-appx:///Assets/WideLogo.scale-100.png");
            Uri largeLogoUri = new Uri("ms-appx:///Assets/Square310x310Logo.scale-100.png");

            SecondaryTile secondaryTile = new SecondaryTile();

            secondaryTile.TileId      = pinnablePageControl.TileId;
            secondaryTile.DisplayName = pinnablePageControl.TileName;
            secondaryTile.Arguments   = pinnablePageControl.GetParameters().ToQueryString();

            secondaryTile.VisualElements.ShowNameOnSquare150x150Logo = true;
            secondaryTile.VisualElements.ShowNameOnWide310x150Logo   = true;
            secondaryTile.VisualElements.ShowNameOnSquare310x310Logo = true;
            secondaryTile.VisualElements.Square30x30Logo             = smallLogoUri;
            secondaryTile.VisualElements.Square150x150Logo           = logoUri;
            secondaryTile.VisualElements.Wide310x150Logo             = wideLogoUri;
            secondaryTile.VisualElements.Square310x310Logo           = largeLogoUri;
            secondaryTile.VisualElements.ForegroundText = ForegroundText.Light;

            if (await secondaryTile.RequestCreateAsync())
            {
                try
                {
                    await pinnablePageControl.UpdateTileAsync(true);
                }
                catch
                {
                    // In case of network error, don't bring down the app. Nothing we can do here...
                    return(false);
                }
            }

            return(true);
        }
        /// <summary>
        /// Unpins a secondary tile to the start screen.
        /// </summary>
        public async Task<bool> UnPinSecondaryTileAsync(IPinablePageControl pinnablePageControl)
        {
            var secondaryTile = (from tile in await SecondaryTile.FindAllAsync()
                                 where string.Equals(pinnablePageControl.TileId, tile.TileId, StringComparison.OrdinalIgnoreCase)
                                 select tile).FirstOrDefault();

            if (secondaryTile != null)
            {
                if (await secondaryTile.RequestDeleteAsync())
                {
                    await pinnablePageControl.UpdateTileAsync(false);
                    return true;
                }
            }

            return false;
        }
 public Task <bool> UnPinSecondaryTileAsync(IPinablePageControl pinnablePageControl)
 {
     return(Task.FromResult <bool>(false));
 }