エクスポート (0) 印刷
すべて展開

方法: Windows Phone のタイルを作成、削除、および更新する

2012/02/09

このサンプルは、ShellTile API を使用してアプリケーション タイルを更新する方法を示します。また、セカンダリ タイルの作成、削除、および更新方法も示します。「Windows Phone のタイルの概要」では、タイルのプロパティおよびタイルを更新するために使用できるさまざまなメソッドについて説明しています。

サンプル アプリケーションには、3 つのページがあります。MainPage は、他の 2 つのページに移動できるだけです。ApplicationTile ページでは、アプリケーション タイルのプロパティを更新できます。すべてのプロパティが同時に設定されます。SecondaryTile ページでは、セカンダリ タイルを作成、更新、および削除することができます。各プロパティを個別に設定できます。また、QueryString からの値の取得も示します。ユーザーが MainPage ページから SecondaryTile ページに移動すると、DefaultTitle の値は FromMain になります。ユーザーがセカンダリ タイルをタップすることによって SecondaryTile ページに移動すると、DefaultTitle の値は FromTile になります。

注注:

ShellTile を使用するとアプリケーション タイルのプロパティを更新できますが、これを使用してアプリケーション タイルを作成したり削除することはできません。アプリケーション タイルの作成と削除の詳細については、「Windows Phone のタイルの概要」を参照してください。

この完成したサンプルについては、「Windows Phone のコード サンプル」を参照してください。

この手順では、新しいプロジェクトを作成し、アプリケーションの MainPage、ApplicationTile、SecondaryTile という 3 つのページの UI を設計します。

AP_Tiles_TileSample_Layout

UI レイアウトを作成するには

  1. 新しい Silverlight for Windows Phone プロジェクトを作成して、TileSample という名前を付けます。

  2. Microsoft Paint などの画像編集ツールを使用して、バックグラウンド画像として使用するサイズ 173 x 173 の画像ファイルを 3 つ作成します。簡単にするために、赤、青、緑の単色にすることにします。これらの名前を Red.jpg、Blue.jpg、Green.jpg とします。「Windows Phone のコード サンプル」から TileSample プロジェクトをダウンロードして、そこに含まれている画像を使用することもできます。ソリューション エクスプローラーTileSample プロジェクトを選択し、メニューから [プロジェクト]、[既存の項目の追加] の順にクリックして、3 つの画像ファイルをプロジェクトに追加します。3 つの画像ファイルを選択し、[追加] をクリックします。各画像について、[ビルド アクション] プロパティを [コンテンツ] に設定します。

  3. TitlePanel を次の XAML コードに置き換えることにより、アプリケーションの名前と MainPage のページ タイトルを設定します。

            <!--TitlePanel contains the name of the application and page title-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="Tile Sample" Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock x:Name="PageTitle" Text="Tiles" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
            </StackPanel>
    
    
  4. MainPage の XAML コードは次のとおりです。ここには、1 つのテキスト ブロックと 2 つのボタンがあります。

    コントロールの種類

    コントロール名

    コントロール コンテンツ

    TextBlock

    textBlockDescription

    このサンプルは、アプリケーション タイルの更新方法を示します。また、セカンダリ タイルの作成、更新、および削除方法も示します。

    ボタン

    buttonChangeApplicationTile

    アプリケーション タイルを変更します。

    ボタン

    buttonChangeSecondaryTile

    セカンダリ タイルを変更します。

    各ボタンは、button_Click イベントを処理します。

    MainPage の UI を作成するには、MainPage.xaml<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid> を次のコードに置き換えます。

            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <TextBlock Height="170" HorizontalAlignment="Left" Margin="12,6,0,0" Name="textBlockDescription" Text="This sample demonstrates how to update Application Tiles.  It also demonstrates how to create, update, and delete secondary Tiles." VerticalAlignment="Top" Width="438" TextWrapping="Wrap" TextAlignment="Left" />
                <Button Content="Change Application Tile" Height="72" HorizontalAlignment="Left" Margin="28,182,0,0" Name="buttonChangeApplicationTile" VerticalAlignment="Top" Width="392" Click="buttonChangeApplicationTile_Click" />
                <Button Content="Change Secondary Tile" Height="72" HorizontalAlignment="Left" Margin="28,278,0,0" Name="buttonChangeSecondaryTile" VerticalAlignment="Top" Width="392" Click="buttonChangeSecondaryTile_Click" />
            </Grid>
    
    
  5. 次の手順では、ApplicationTile.xaml の UI を作成します。ApplicationTile の UI を作成するには、ソリューション エクスプローラーで TileSample プロジェクト名を選択し、メニューの [プロジェクト]、[新しい項目の追加] の順にクリックします。新しい [Windows Phone Portrait Page] を追加して、ApplicationTile.xaml という名前を付けます。[追加] クリックすると、ApplicationTile.xaml ファイルと ApplicationTile.xaml.cs ファイルが作成されます。

  6. TitlePanel を次の XAML コードに置き換えることにより、アプリケーションの名前と ApplicationTile ページのページ タイトルを設定します。

            <!--TitlePanel contains the name of the application and page title-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="Tile Sample" Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock x:Name="PageTitle" Text="Application Tile" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="64" />
            </StackPanel>
    
    
  7. ApplicationTile ページの XAML コードは次のとおりです。ここには、1 つのテキスト ブロック、6 つのテキスト ブロックと 6 つのテキスト ボックスの並び、およびプロパティを設定するためのボタンが含まれています。

    コントロールの種類

    コントロール名

    コントロール コンテンツ

    TextBlock

    textBlockDescription

    アプリケーション タイルのプロパティをグループとして設定します。プロパティをクリアするには、テキストと画像のプロパティを空白のままにします。Count プロパティをクリアするには、Count を 0 に設定します。

    TextBlock

    textBlockTitle

    Title

    TextBox

    textBoxTitle

    <blank>

    TextBlock

    textBlockBackgroundImage

    バックグラウンド画像

    TextBox

    textBoxBackground

    <blank>

    TextBlock

    textBlockCount

    Count (1-99, 0=Clear)

    TextBox

    textBoxCount

    <blank>

    TextBlock

    textBlockBackTitle

    BackTitle

    TextBox

    textBoxBackTitle

    <blank>

    TextBlock

    textBlockBackBackgroundImage

    BackBackground 画像

    TextBox

    textBoxBackBackGround

    <blank>

    TextBlock

    textBlockBackContent

    BackContent

    TextBox

    textBoxBackContent

    <blank>

    ボタン

    buttonSetApplicationTile

    アプリケーション タイルのプロパティを設定する

    buttonSetApplicationTile は、button_Click イベントを処理します。

    ApplicationTile.xaml 内の <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid> を次のコードに置き換えます。

            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <TextBlock Height="75" HorizontalAlignment="Left" Margin="12,6,0,0" Name="textBlockDescription" Text="Sets Application Tile properties as a group. Leave text and image properties blank to clear the property. Set Count to 0 to clear the Count property." VerticalAlignment="Top" Width="438" TextWrapping="Wrap" FontSize="16" />
                <TextBlock Height="30" HorizontalAlignment="Left" Margin="164,96,0,0" Name="textBlockTitle" Text="Title" VerticalAlignment="Top" FontSize="18" />
                <TextBox Height="72" HorizontalAlignment="Left" Margin="197,74,0,0" Name="textBoxTitle" Text="" VerticalAlignment="Top" Width="260" />
                <TextBlock Height="30" HorizontalAlignment="Left" Margin="46,171,0,0" Name="textBlockBackgroundImage" Text="Background Image" VerticalAlignment="Top" FontSize="18" />
                <TextBox Height="72" HorizontalAlignment="Left" Margin="197,152,0,0" Name="textBoxBackgroundImage" Text="" VerticalAlignment="Top" Width="260" />
                <TextBlock Height="30" HorizontalAlignment="Left" Margin="23,249,0,0" Name="textBlockCount" Text="Count (1-99, 0=Clear)" VerticalAlignment="Top" FontSize="18" Width="175" />
                <TextBox Height="72" HorizontalAlignment="Left" Margin="197,230,0,0" Name="textBoxCount" Text="" VerticalAlignment="Top" Width="260" InputScope="Number" />
                <TextBlock Height="30" HorizontalAlignment="Left" Margin="127,359,0,0" Name="textBlockBackTitle" Text="BackTitle" VerticalAlignment="Top" FontSize="18" />
                <TextBox Height="72" HorizontalAlignment="Left" Margin="197,338,0,0" Name="textBoxBackTitle" Text="" VerticalAlignment="Top" Width="260" />
                <TextBlock Height="30" HorizontalAlignment="Left" Margin="10,436,0,0" Name="textBlockBackBackgroundImage" Text="BackBackground Image" VerticalAlignment="Top" FontSize="18" />
                <TextBox Height="72" HorizontalAlignment="Left" Margin="197,416,0,0" Name="textBoxBackBackgroundImage" Text="" VerticalAlignment="Top" Width="260" />
                <TextBlock Height="30" HorizontalAlignment="Left" Margin="97,515,0,0" Name="textBlockContent" Text="BackContent" VerticalAlignment="Top" FontSize="18" />
                <TextBox Height="72" HorizontalAlignment="Left" Margin="197,494,0,0" Name="textBoxBackContent" Text="" VerticalAlignment="Top" Width="260" />
                <Button Content="Set Application Tile Properties" Height="72" HorizontalAlignment="Left" Margin="23,551,23,0" Name="buttonSetApplicationTile" VerticalAlignment="Top" Width="410" FontSize="20" FontFamily="Calibri" Click="buttonSetApplicationTile_Click" />
            </Grid>
    
    
  8. UI 作成の最後の手順は、SecondaryTile.xaml ページを追加することです。SecondaryTile の UI を作成するには、ソリューション エクスプローラーで TileSample プロジェクト名を選択し、メニューの [プロジェクト]、[新しい項目の追加] を順にクリックします。新しい [Windows Phone Portrait Page] を追加して、SecondaryTile.xaml という名前を付けます。[追加] クリックすると、SecondaryTile.xaml ファイルと SecondaryTile.xaml.cs ファイルが作成されます。

  9. TitlePanel を次の XAML コードに置き換えることにより、アプリケーションの名前と SecondaryTile ページのページ タイトルを設定します。

            <!--TitlePanel contains the name of the application and page title-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="Tile Sample" Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock x:Name="PageTitle" Text="Secondary Tile" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="64" />
            </StackPanel>
    
    
  10. SecondaryTile ページの XAML コードは次のとおりです。ここには、1 つのチェック ボックス、1 つのテキスト ブロック、および 6 つのテキスト ブロックと 6 つのボタンの並びが含まれています。

    コントロールの種類

    コントロール名

    コントロール コンテンツ

    CheckBox

    checkBoxDisplaySecondaryTile

    セカンダリ タイルの表示

    TextBlock

    textBlockDescription

    セカンダリ タイルのプロパティを個別に設定します。

    TextBox

    textBoxTitle

    <blank>

    ボタン

    buttonTitle

    Title

    TextBox

    textBoxBackGround

    <blank>

    ボタン

    buttonBackGround

    バックグラウンド

    TextBox

    textBoxCount

    <blank>

    ボタン

    buttonCount

    Count

    TextBox

    textBoxBackTitle

    <blank>

    ボタン

    buttonBackTitle

    バックのタイトル

    TextBox

    textBoxBackBackGround

    <blank>

    ボタン

    buttonBackBackGround

    バックのバックグラウンド

    TextBox

    textBoxBackContent

    <blank>

    ボタン

    buttonBackContent

    バックのコンテンツ

    checkBoxDisplaySecondaryTile コントロールは、checkboxDisplaySecondaryTile_Checked イベントおよび checkboxDisplaySecondaryTile_Unchecked イベントを処理します。

    各ボタンは、button_Click イベントを処理します。

    Secondary.xaml 内の <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid> を次のコードに置き換えます。

            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <CheckBox Content="Display Secondary Tile " Height="72" HorizontalAlignment="Left" Margin="20,4,0,0" Name="checkBoxDisplaySecondaryTile" VerticalAlignment="Top" Checked="checkBoxDisplaySecondaryTile_Checked" Unchecked="checkBoxDisplaySecondaryTile_Unchecked" />
                <TextBlock Height="33" HorizontalAlignment="Center" Margin="9,91,0,0" Name="textBlockDescription" Text="Sets properties of the secondary Tile individually." VerticalAlignment="Top" Width="441" TextAlignment="Center" />
    
                <TextBox Height="72" HorizontalAlignment="Left" Margin="9,127,0,0" Name="textBoxTitle" Text="" VerticalAlignment="Top" Width="260" />
                <Button Content="Set Title" Height="72" HorizontalAlignment="Left" Margin="259,127,0,0" Name="buttonSetTitle" VerticalAlignment="Top" Width="200" Click="buttonSetTitle_Click" FontSize="16" />
    
                <TextBox Height="72" HorizontalAlignment="Left" Margin="9,205,0,0" Name="textBoxBackgroundImage" Text="" VerticalAlignment="Top" Width="260" />
                <Button Content="Set Background" Height="72" HorizontalAlignment="Left" Margin="259,205,0,0" Name="buttonSetBackgroundImage" VerticalAlignment="Top" Width="200" FontSize="16" Click="buttonSetBackgroundImage_Click" />
    
                <TextBox Height="72" HorizontalAlignment="Left" Margin="9,283,0,0" Name="textBoxCount" Text="" VerticalAlignment="Top" Width="260"  InputScope="Number"/>
                <Button Content="Set Count(1-99,0=Clear)" Height="72" HorizontalAlignment="Left" Margin="259,283,0,0" Name="buttonSetCount" VerticalAlignment="Top" Width="200" Click="buttonSetCount_Click" FontSize="14" />
    
                <TextBox Height="72" HorizontalAlignment="Left" Margin="9,391,0,0" Name="textBoxBackTitle" Text="" VerticalAlignment="Top" Width="260" />
                <Button Content="Set BackTitle" Height="72" HorizontalAlignment="Left" Margin="259,391,0,0" Name="buttonSetBackTitle" VerticalAlignment="Top" Width="200" Click="buttonSetBackTitle_Click" FontSize="16" />
    
                <TextBox Height="72" HorizontalAlignment="Left" Margin="9,469,0,0" Name="textBoxBackBackgroundImage" Text="" VerticalAlignment="Top" Width="260" />
                <Button Content="Set BackBackground" Height="72" HorizontalAlignment="Left" Margin="259,469,0,0" Name="buttonSetBackBackgroundImage" VerticalAlignment="Top" Width="200" FontSize="16" Click="buttonSetBackBackgroundImage_Click" />
    
                <TextBox Height="72" HorizontalAlignment="Left" Margin="9,547,0,0" Name="textBoxBackContent" Text="" VerticalAlignment="Top" Width="260" />
                <Button Content="Set BackContent" Height="72" HorizontalAlignment="Left" Margin="259,547,0,0" Name="buttonSetBackContent" VerticalAlignment="Top" Width="200" FontSize="16" Click="buttonSetBackContent_Click" />
            </Grid>
    
    
    

MainPage を実装するには、MainPage の 2 つのボタンにイベント ハンドラーを追加する必要があります。

MainPage の機能を実装するには

  • MainPage.xaml.cs に次のコードを追加します。このコードは、button_Click イベントにイベント ハンドラーを実装します。ボタンがクリックされると、アプリケーションは適切なページに移動します。SecondaryTile ページに移動すると、パラメーター DefaultTitleFromMain に設定されるので、SecondaryTile ページでは移動元を認識することができます。後で Tile から SecondaryPage に移動するときには、DefaultTitleFromTile に設定します。

    
            // Navigate to the page for modifying Application Tile properties.
            private void buttonChangeApplicationTile_Click(object sender, RoutedEventArgs e)
            {
                this.NavigationService.Navigate(new Uri("/ApplicationTile.xaml", UriKind.Relative));
            }
    
    
            // Navigate to the page for modifying secondary Tile properties. 
            // Pass a parameter that lets the SecondaryTile page know that it was navigated to from MainPage.
            // (DefaultTitle will equal 'FromTile' when the user navigates to the SecondaryTile page from a Tile.
            private void buttonChangeSecondaryTile_Click(object sender, RoutedEventArgs e)
            {
                this.NavigationService.Navigate(new Uri("/SecondaryTile.xaml?DefaultTitle=FromMain", UriKind.Relative));
            }
    
    

ApplicationTile ページを実装するには、buttonSetApplicationTile_Click イベントにイベント ハンドラーを追加する必要があります。

ApplicationTile ページの機能を実装するには

  1. ShellTile 名前空間のために、ApplicationTile.xaml.cs ファイルの先頭に using ディレクティブを追加します。

    using Microsoft.Phone.Shell;
    
    
  2. ApplicationTile.xaml.cs に次のコードを追加します。このコードは、buttonSetApplicationTile_Click イベントにイベント ハンドラーを実装します。テキスト ボックスに入力された値を取得して、アプリケーション タイルのすべてのプロパティを一度に設定します。

    
            // Set all the properties of the Application Tile.
            private void buttonSetApplicationTile_Click(object sender, RoutedEventArgs e)
            {
                int newCount = 0;
    
                // Application Tile is always the first Tile, even if it is not pinned to Start.
                ShellTile TileToFind = ShellTile.ActiveTiles.First();
    
                // Application should always be found
                if (TileToFind != null)
                {
                    // if Count was not entered, then assume a value of 0
                    if (textBoxCount.Text == "")
                    {
                        // A value of '0' means do not display the Count.
                        newCount = 0;
                    }
                    // otherwise, get the numerical value for Count
                    else
                    {
                        newCount = int.Parse(textBoxCount.Text);
                    }
    
                    // Set the properties to update for the Application Tile.
                    // Empty strings for the text values and URIs will result in the property being cleared.
                    StandardTileData NewTileData = new StandardTileData
                    {
                        Title = textBoxTitle.Text,
                        BackgroundImage = new Uri(textBoxBackgroundImage.Text, UriKind.Relative),
                        Count = newCount,
                        BackTitle = textBoxBackTitle.Text,
                        BackBackgroundImage = new Uri(textBoxBackBackgroundImage.Text, UriKind.Relative),
                        BackContent = textBoxBackContent.Text
                    };
    
                    // Update the Application Tile
                    TileToFind.Update(NewTileData);
                }
            }
    
    

SecondaryTile ページを実装するには、セカンダリ タイルの状態に応じてチェック ボックスを設定し、チェック ボックスがオンになっているかどうかに応じてチェック ボックスを作成または削除して、各ボタンにイベント ハンドラーを追加する必要があります。

SecondaryTile ページの機能を実装するには

  1. ShellTile 名前空間のために、SecondaryTile.xaml.cs ファイルの先頭に using ディレクティブを追加します。

    using Microsoft.Phone.Shell;
    
    
  2. OnNavigatedTo イベント ハンドラーを追加します。このページに移動してくるたびに、セカンダリ タイルが存在しているかどうかを確認し、それに応じてチェック ボックスを設定する必要があります。ここでは、QueryString 内で設定されている DefaultTitle に基づいて Title の既定値も設定されます。

    
            // Event handler for when this page is navigated to. Looks to see
            // whether the Tile exists and set the check box appropriately.
            // Also fills in the default value for the Title, based on the
            // value passed in in the QueryString - either FromMain or FromTile.        
            protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
            {
                base.OnNavigatedTo(e);
    
                // See whether the Tile is pinned, and if so, make sure the check box for it is checked.
                // (User may have deleted it manually.)
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                checkBoxDisplaySecondaryTile.IsChecked = (TileToFind != null);
    
                // To demonstrate the use of the Navigation URI and query parameters, we set the default value
                // of the Title text box based on where we navigated from. If we navigated to this page
                // from the MainPage, the DefaultTitle parameter will be "FromMain". If we navigated here
                // when the secondary Tile was tapped, the parameter will be "FromTile".
                textBoxTitle.Text = this.NavigationContext.QueryString["DefaultTitle"];
    
            }
    
    
  3. checkBoxDisplaySecondaryTile_Checked イベント ハンドラーに次のコードを追加します。このコードでは、指定した ID を持つ Tile が既に存在するかどうかが確認されます。Tile が存在しない場合は、StandardTileData オブジェクトが作成され、それを使用して Tile のフロントとバックのプロパティが設定されます。

    
            // Event handler for when the check box is checked. Create a secondary Tile if it doesn't
            // already exist.
            private void checkBoxDisplaySecondaryTile_Checked(object sender, RoutedEventArgs e)
            {
                // Look to see whether the Tile already exists and if so, don't try to create it again.
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                // Create the Tile if we didn't find that it already exists.
                if (TileToFind == null)
                {
                    // Create the Tile object and set some initial properties for the Tile.
                    // The Count value of 12 shows the number 12 on the front of the Tile. Valid values are 1-99.
                    // A Count value of 0 indicates that the Count should not be displayed.
                    StandardTileData NewTileData = new StandardTileData
                    {
                        BackgroundImage = new Uri("Red.jpg", UriKind.Relative),
                        Title = "Secondary Tile",
                        Count = 12,
                        BackTitle = "Back of Tile",
                        BackContent = "Welcome to the back of the Tile",
                        BackBackgroundImage = new Uri("Blue.jpg", UriKind.Relative)
                    };
    
                    // Create the Tile and pin it to Start. This will cause a navigation to Start and a deactivation of our application.
                    ShellTile.Create(new Uri("/SecondaryTile.xaml?DefaultTitle=FromTile", UriKind.Relative), NewTileData);
                }
    
            }
    
    
    
  4. checkBoxDisplaySecondaryTile_Unchecked イベント ハンドラーに次のコードを追加します。このコードは、指定された ID を持つ Tile を検索し、見つかった場合はそれをスタート画面から削除します。

    
            // Event handler for when the check box is unchecked.  Delete the secondary Tile
            // if it exists.
            private void checkBoxDisplaySecondaryTile_Unchecked(object sender, RoutedEventArgs e)
            {
                // Find the Tile we want to delete.
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                // If the Tile was found, then delete it.
                if (TileToFind != null)
                {
                    TileToFind.Delete();
                }
    
            }
    
    
  5. button_Click イベント ハンドラーを追加します。各イベント ハンドラーは、更新する Tile を見つけ、対応するテキスト ボックスから新しい値を取得し、その新しい値で Tile を更新します。

    
            // Handle the Title button clicked event by setting the front of Tile title.
            private void buttonSetTitle_Click(object sender, RoutedEventArgs e)
            {
                // Find the Tile we want to update.
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                // If the Tile was found, then update the Title.
                if (TileToFind != null)
                {
                    StandardTileData NewTileData = new StandardTileData
                    {
                        Title = textBoxTitle.Text
                    };
    
                    TileToFind.Update(NewTileData);
                }
    
            }
    
    
            // Handle the Background Image button clicked event by setting the front of Tile background image.
            private void buttonSetBackgroundImage_Click(object sender, RoutedEventArgs e)
            {
                // Find the Tile we want to update.
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                // If the Tile was found, then update the background image.
                if (TileToFind != null)
                {
                    StandardTileData NewTileData = new StandardTileData
                    {
                        BackgroundImage = new Uri(textBoxBackgroundImage.Text, UriKind.Relative)
                    };
    
                    TileToFind.Update(NewTileData);
                }
    
            }
    
            // Handle the Count button clicked event by setting the front of Tile count value.
            private void buttonSetCount_Click(object sender, RoutedEventArgs e)
            {
                int newCount = 0;
    
                // Find the Tile we want to update.
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                // If the Tile was found, then update the count.
                if (TileToFind != null)
                {
                    // if Count was not entered, then assume a value of 0.
                    if (textBoxCount.Text == "")
                    {
                        newCount = 0;
                    }
                    // Otherwise, get the numerical value for Count.
                    else
                    {
                        newCount = int.Parse(textBoxCount.Text);
                    }
    
                    StandardTileData NewTileData = new StandardTileData
                    {
                        Count = newCount
                    };
    
                    TileToFind.Update(NewTileData);
                }
    
            }
    
    
            // Handle the Back Title button clicked event by setting the back of Tile title.
            private void buttonSetBackTitle_Click(object sender, RoutedEventArgs e)
            {
                // Find the Tile we want to update.
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                // If the Tile was found, then update the title on the back of the Tile.
                if (TileToFind != null)
                {
                    StandardTileData NewTileData = new StandardTileData
                    {
                        BackTitle = textBoxBackTitle.Text
                    };
    
                    TileToFind.Update(NewTileData);
                }
    
            }
    
    
            // Handle the Back Background Image button clicked event by setting the back of Tile background image.
            private void buttonSetBackBackgroundImage_Click(object sender, RoutedEventArgs e)
            {
                // Find the Tile we want to update.
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                // If the Tile was found, then update the background image on the back of the Tile.
                if (TileToFind != null)
                {
                    StandardTileData NewTileData = new StandardTileData
                    {
                        BackBackgroundImage = new Uri(textBoxBackBackgroundImage.Text, UriKind.Relative)
                    };
    
                    TileToFind.Update(NewTileData);
                }
    
            }
    
            // Handle the Back Content button clicked event by setting the back of Tile content.
            private void buttonSetBackContent_Click(object sender, RoutedEventArgs e)
            {
                // Find the Tile we want to update.
                ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=FromTile"));
    
                // If the Tile was found, then update the content on the back of the Tile.
                if (TileToFind != null)
                {
                    StandardTileData NewTileData = new StandardTileData
                    {
                        BackContent = textBoxBackContent.Text
                    };
    
                    TileToFind.Update(NewTileData);
                }
    
            }
    
    
    

これで、セカンダリ タイルを作成、削除、および更新するコードが完成しました。

アプリケーションをテストするには

  1. F5 キーを押してアプリケーションのデバッグを開始します。アプリケーションがエミュレーター内で起動します。

  2. Change Application Tile ページに移動します。アプリケーション タイルの一部のプロパティを、次のスクリーンショットに示すように設定し、[Set Application Tile Properties] ボタンをクリックします。

    AP_Tiles_ApplicationTileRunning
  3. 設定したプロパティの結果を確認するには、電話エミュレーターの [スタート] ボタンを押してスタート画面に移動します。アプリケーション リストに移動し、リスト内で [TileSample] を検索します。[TileSample] をタップしたまま押さえ、[スタート画面に追加] を選択します。エミュレーターがスタート画面に移動し、アプリケーション タイルが追加されます。アプリケーション タイルのプロパティは、その前の手順で設定したとおりになっているはずです。

  4. Phone Emulator の [戻る] ボタンを押して、アプリケーションに戻ります。[戻る] ボタンを押しても、デバッグ セッションは終了しません。

  5. [戻る] ボタンをもう一度押すと、アプリケーションの MainPage に移動します。

  6. SecondaryTile ページに移動し、セカンダリ タイルを作成するためのチェック ボックスをオンにします。電話は自動的にスタート画面に移動し、新しいタイルが表示されます。

  7. Phone Emulator の [戻る] ボタンを押して、アプリケーションに戻ります。

  8. Title プロパティの新しい値を入力し、[Set Title] をクリックします。

  9. 電話エミュレーターのスタート ボタンを押してスタート画面に戻ります。新しい Title プロパティが表示されます。

  10. もう一度 [戻る] ボタンを押して、他のプロパティを変更してみます。

    AP_Tiles_SecondaryTilesRunning
  11. スタート画面で、セカンダリ タイルをタップします。TileSample アプリケーションが起動して、直接 SecondaryTile ページに移動します。Title の既定値は FromTile になります。

AP_Tiles_TileSampleRunningFront

AP_Tiles_TileSampleRunningBack

表示:
© 2014 Microsoft