かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Universal Windows Platform appのタイル

UWP appではタイルの自由度が上がっています。どれくらい上がってるかというと、以下のページにあるようにXML自由に書けるぜヒャッハーっていうくらいです。

Adaptive Tile Templates - Schema and Documentation - Tiles and Toasts - Site Home - MSDN Blogs

ただし、これを手で組み立てるのはたまったもんじゃないです…ということで、Windows Runtime向けにNotificationsExtensionsというライブラリが提供されていたように、UWPでもNotificationsExtensions.Win10というライブラリが提供されました!これで勝つる。

使い方はとても簡単です。上記ページにあるXMLをそのままオブジェクトに落とし込んだように書けます。

var bindingContent = new TileBindingContentAdaptive
{
    PeekImage = new TilePeekImage
    {
        Source = new TileImageSource("Assets/Square150x150Logo.png")
    },
    Children =
    {
        new TileText { Text = "Hello world", Style = TileTextStyle.Title },
        new TileText { Text = "okazuki", Style = TileTextStyle.Body },
    }
};

var tileBinding = new TileBinding
{
    Branding = TileBranding.NameAndLogo,
    Content = bindingContent,
    DisplayName = "Hello display name",
};

var content = new TileContent
{
    Visual = new TileVisual
    {
        TileSmall = tileBinding,
        TileMedium = tileBinding,
        TileLarge = tileBinding,
        TileWide = tileBinding,
    }
};

var n = new TileNotification(content.GetXml());
TileUpdateManager.CreateTileUpdaterForApplication()
    .Update(n);
var bindingContent = new TileBindingContentAdaptive
{
    PeekImage = new TilePeekImage
    {
        Source = new TileImageSource("Assets/Square150x150Logo.png")
    },
    Children =
    {
        new TileText { Text = "Hello world", Style = TileTextStyle.Title },
        new TileText { Text = "okazuki", Style = TileTextStyle.Body },
    }
};

var tileBinding = new TileBinding
{
    Branding = TileBranding.NameAndLogo,
    Content = bindingContent,
    DisplayName = "Hello display name",
};

var content = new TileContent
{
    Visual = new TileVisual
    {
        TileSmall = tileBinding,
        TileMedium = tileBinding,
        TileLarge = tileBinding,
        TileWide = tileBinding,
    }
};

var n = new TileNotification(content.GetXml());
TileUpdateManager.CreateTileUpdaterForApplication()
    .Update(n);

これで、タイルが出来ます。簡単ですね。

ソース

一応ソース置いときます。

github.com