Metroスタイルのアプリケーションでスタート画面のタイルにメッセージを表示する場合、XMLをコンテンツとして渡す必要があります。XMLのコンテンツはタイルの大きさやメッセージの表示レイアウトにより、フォーマットが異なります。この記事ではメッセージの種類ごとのXMLのテンプレートを取得するコードを紹介します。
UI
下図のUIを準備します。
Metroスタイルアプリではコントロールを配置しただけでは名前が未設定になっています。配置したTextBoxコントロールを選択し、プロパティウィンドウの上部の[名前]欄に"textBox1"を設定します。
同様にComboBoxにも"comboBox1"を設定します。
コード
UIの右側のボタン"ShowTemplate Wide01"のボタンのClickイベントに以下のコードを記述します。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
XmlDocument xml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText01);
textBox1.Text = xml.GetXml();
}
解説
TileUpdateManagerクラスのGetTemplateContentメソッドを呼び出しXMLのテンプレートを取得します。GetTemplateContentメソッドの引数には取得するテンプレートのTileTemplateTypeを与えます。GetTemplateContentメソッドの戻り値はXmlDocuemntクラスになります。XMLコンテンツは戻り値のXmlDocument内に設定されています。GetXmlメソッドを用いてXMLを取得します。
アプリケーションの実行
アプリケーションを実行します。下図の画面が表示されます。
右側の[ShowTemplate Wide01]ボタンを押すとテキストボックスにテンプレートが表示されます。(下図)
他のテンプレートの取得
先の例では、TileTemplateType.TileWideText01のテンプレートを取得しました。TileTemplateTypeで定義されているテンプレートの一覧を列挙して選択したテンプレートを取得するコードを記述します。
コード
以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
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.Navigation;
using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
namespace GetNotificationTemplate
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class BlankPage : Page
{
public BlankPage()
{
this.InitializeComponent();
Array array = Enum.GetValues(typeof(TileTemplateType));
foreach (TileTemplateType t in array)
{
comboBox1.Items.Add(t);
}
}
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
XmlDocument xml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText01);
textBox1.Text = xml.GetXml();
}
private void button2_Click(object sender, RoutedEventArgs e)
{
string str = comboBox1.SelectedItem.ToString();
TileTemplateType ttt = (TileTemplateType)Enum.Parse(typeof(TileTemplateType), str);
XmlDocument xml = TileUpdateManager.GetTemplateContent(ttt);
textBox1.Text = xml.GetXml();
}
}
}
解説
コンストラクタの下記コードにて、TileTemplateTypeの値を列挙しコンボボックスの要素に追加します。
Array array = Enum.GetValues(typeof(TileTemplateType));
foreach (TileTemplateType t in array)
{
comboBox1.Items.Add(t);
}
ボタンのクリックイベントです。コンボボックスで選択した要素のXMLテンプレートを取得しテキストボックスに表示します。
private void button2_Click(object sender, RoutedEventArgs e)
{
string str = comboBox1.SelectedItem.ToString();
TileTemplateType ttt = (TileTemplateType)Enum.Parse(typeof(TileTemplateType), str);
XmlDocument xml = TileUpdateManager.GetTemplateContent(ttt);
textBox1.Text = xml.GetXml();
}
アプリケーション実行結果
アプリケーションを実行します。コンボボックスを開くとTileTemplateTypeの値の一覧が表示されます。
コンボボックスでTileTemplateTypeの値を選択し右側の[Show Template]ボタンを押します。コンボボックスで選択したテンプレートのXMLがテキストボックスに表示されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2012-03-12