Windows10、Visual Studio 2017、.NET Framework 4.5で、以下のようなDataTemplateSelectorを作成しました。

[ContentProperty("DataTemplateTable")]
public class TypeToDataTemplateSelector : DataTemplateSelector
{
    public TypeToDataTemplateDictionary DataTemplateTable { get; set; }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        // DataTemplateTableからDataTemplateを取得する処理
    }
}

public class TypeToDataTemplateDictionary : Dictionary<Type, DataTemplate> { }

以下のコードでは、問題なく動作していました。

<local:TypeToDataTemplateSelector x:Key="TypeToDataTemplateSelector">
    <local:TypeToDataTemplateDictionary>
        <DataTemplate x:Key="{x:Type local:ViewModelA}" DataType="local:ViewModelB">
            <TextBlock Text="ViewModelA"/>
        </DataTemplate>
        <DataTemplate x:Key="{x:Type local:ViewModelB}" DataType="local:ViewModelB">
            <TextBlock Text="ViewModelB"/>
        </DataTemplate>
        <DataTemplate x:Key="{x:Type local:ViewModelC}" DataType="local:ViewModelC">
            <TextBlock Text="ViewModelC"/>
        </DataTemplate>
    </local:TypeToDataTemplateDictionary>
</local:TypeToDataTemplateSelector>

しかし、StaticResourceを使用したときに問題が発生しました。

<DataTemplate x:Key="DataTemplateA" DataType="local:ViewModelA">
    <TextBlock Text="ViewModelA"/>
</DataTemplate>
<DataTemplate x:Key="DataTemplateB" DataType="local:ViewModelB">
    <TextBlock Text="ViewModelB"/>
</DataTemplate>
<DataTemplate x:Key="DataTemplateC" DataType="local:ViewModelC">
    <TextBlock Text="ViewModelC"/>
</DataTemplate>
<local:TypeToDataTemplateSelector x:Key="TypeToDataTemplateSelector">
    <local:TypeToDataTemplateDictionary>
        <StaticResource x:Key="{x:Type local:ViewModelA}" ResourceKey="DataTemplateA"/>
        <StaticResource x:Key="{x:Type local:ViewModelB}" ResourceKey="DataTemplateB"/>
        <StaticResource x:Key="{x:Type local:ViewModelC}" ResourceKey="DataTemplateC"/>
    </local:TypeToDataTemplateDictionary>
</local:TypeToDataTemplateSelector>

ビルドは通るのですが、実行時にXamlObjectWriterException: ''StaticResourceHolder' オブジェクトにキー値がありません。' 行番号 'xx'、行位置 'xx'。と例外が発生してしまいます。

これをどうにかして回避し、DictionaryにStaticResourceを使うことはできないでしょうか。