/// <summary>
        ///  選択されているアイテムをスタート画面にピン留めする.
        /// </summary>
        /// <param name="buttonPosition">呼び出し元ボタンの場所</param>
        private async void PinSelectedItemToStartAsync(Point buttonPosition)
        {
            var item = GetSelectedItem();

            if (item == null)
            {
                return;
            }

            var tile = await Tile.CreateSecodaryTileForItem(item);

            if (tile == null)
            {
                return;
            }

            tile.SecondaryTile.DisplayName = String.Format("{0} - {1}", App.MyResource["AppName"], item.Name);
            var re = new Rect(buttonPosition.X, buttonPosition.Y, 100, 100);

            if (await tile.SecondaryTile.RequestCreateForSelectionAsync(re))
            {
                await TileHelper.CleanupUnusedTileIdsAsync();

                item.Setting.TileId = tile.SecondaryTile.TileId;
                App.Current.LockscreenItemList.SaveItemsToSetting();
                TileHelper.SaveTileRegistration(tile);
                UpdatePinUnPinToStartBottomAppBarButtons();
            }
            else
            {
                await tile.DeleteTileImageCacheFilesAsync();
            }
        }
 /// <summary>
 ///  <c>CoreWindow</c>の可視状態が変わった時のイベント処理.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 async void CoreWindow_Current_VisibilityChanged(object sender, Windows.UI.Core.VisibilityChangedEventArgs e)
 {
     // 小細工
     if (this.wasSavedState && e.Visible)
     {
         this.wasSavedState = false;
         LoadCurrentLockscreenImageAsync();
         DoUpdateOnAppLaunchAsync();
         await TileHelper.CleanupUnusedTileIdsAsync();
     }
 }
        /// <summary>
        ///  AppBarの<c>Loaded</c>イベントを処理する.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void BottomAppBar_Loaded(object sender, RoutedEventArgs e)
        {
            var itemsView = GetItemsView();

            this.ItemsSelected = (itemListView != null) ? (itemsView.SelectedItem != null) : false;

            (sender as AppBar).DataContext = this;

            var panel = (sender as AppBar).Content as Panel;

            foreach (var ui in panel.Children)
            {
                base.StartLayoutUpdates(ui, new RoutedEventArgs());
            }

            PreparePastePopupContentsAsync();

            await TileHelper.CleanupUnusedTileIdsAsync();

            UpdatePinUnPinToStartBottomAppBarButtons();
        }
        /// <summary>
        /// このページには、移動中に渡されるコンテンツを設定します。前のセッションからページを
        /// 再作成する場合は、保存状態も指定されます。
        /// </summary>
        /// <param name="navigationParameter">このページが最初に要求されたときに
        /// <see cref="Frame.Navigate(Type, Object)"/> に渡されたパラメーター値。
        /// </param>
        /// <param name="pageState">前のセッションでこのページによって保存された状態の
        /// ディクショナリ。ページに初めてアクセスするとき、状態は null になります。</param>
        protected override async void LoadState(Object navigationParameter, Dictionary <String, Object> pageState)
        {
            // TODO: バインド可能なアイテムのコレクションを this.DefaultViewModel["Items"] に割り当てます
            this.DefaultViewModel["Items"] = App.Current.LockscreenItemList;

            SettingsPane.GetForCurrentView().CommandsRequested += LockscreenItemsPage_CommandsRequested;
            Window.Current.VisibilityChanged += CoreWindow_Current_VisibilityChanged;

            LoadCurrentLockscreenImageAsync();
            await App.Current.LoadAllItemsAsync();

            DoUpdateOnAppLaunchAsync();

            if (App.Current.LockscreenItemList.IsEmpty)
            {
                await Task.Delay(1000);

                ShowAppHelpPopup(new Uri(HelpPageUriString));
            }

            await TileHelper.CleanupUnusedTileIdsAsync();
        }