DataTemplateSelectorを見る "Windows8 Programming"

どうも。最近は、Windows8のModern Styleのアプリを書いていたりしてます。WPFとかXAMLとかは既に触ったことがあったので、いろいろと試していたのですが、いろんなAPIが消えていたり動かなかったりで四苦八苦してます。

今日は、最近試してみたDataTemplateSelectorについて書きたいと思います。何をしたかったかというと、クラスに応じてDataTemplateを切り替えたかったのですが、DataTemplate.DataTypeはなかったのでDataTemplateSelectorを使うことにしました。

DataTemplateSelector classはこちら。
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.datatemplateselector

protected virtual DataTemplate SelectTemplateCore(
  object item,
  DependencyObject container
)

SelectTemplateCoreメソッドを実装していく感じです。はじめは、containerからリソースを検索しようとしたのですが、FindResourceメソッドはないし、自分で実装しようとしてもcontainer.Parentがnullなので探索もできなかったのです。

そこで、作成するDataTemplateSelectorの子クラスのContentをResourceDictionaryにして、そこのリソースを取得することにしました。

ということで、できたのがClassNameDataTemplateSelectorです。Gistにソースあげときます。
https://gist.github.com/3759888