Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

Windows ストアアプリでマークアップ拡張作りたい・・・!(作れません)

$
0
0

オワタ。

というのでは何なので、1つだけ残された拡張の道を歩んでみようと思います。最近まで存在を知らなかったCustomResourceというマークアップ拡張があります。こいつは、デフォルトでは動作しないかわりに、自分で独自の実装を差し込むことが出来るようになっています。やり方は以下の通り。

  • CustomXamlResourceLoaderクラスを継承したクラスを作る
  • GetResourceメソッドをオーバーライドして、状況に応じて返したい型を返すロジックを書く
  • App.xaml.csのコンストラクタで以下の処理をする
    • CustomXamlResourceLoader.Currentに自前クラスのインスタンスをつっこむ

実用的ではないですが、以下のようなCustomXamlResourceLoaderを継承したクラスを作ったとします。

using System;
using System.Collections.Generic;
using System.Text;
using Windows.UI.Xaml.Resources;

namespace App2
{
    publicclass MyCustomLoader : CustomXamlResourceLoader
    {
        protectedoverrideobject GetResource(
            string resourceId, string objectType, string propertyName, string propertyType)
        {
            returnstring.Join(", ", resourceId, objectType, propertyName, propertyType);
        }
    }
}

そして、Appクラスのコンストラクタで、このMyCustomLoaderを使うように設定します。

public App()
{
    CustomXamlResourceLoader.Current = new MyCustomLoader();

    this.InitializeComponent();
    this.Suspending += this.OnSuspending;
}

あとはCustomResourceマークアップ拡張をかくだけです。適当に画面にTextBlockを置いて、Textプロパティに設定してみました。

<TextBlock Text="{CustomResource SampleCustomResource}" />

そうすると、TextBlockが以下のように表示されます。

f:id:okazuki:20140627081948p:plain

まとめ

ドキュメントにも、普通つかわんだろみたいなことが書いてあったのですが、普通使わない感じですね・・・!誰得情報でした。


Viewing all articles
Browse latest Browse all 1387

Trending Articles