WPFでコレクションバインドを行うコントロールを作成しています。

コントロールにバインドされているデータの関連を表現するため、HierarchicalDataTemplateのようなBindingBase型のプロパティを持つDataTemplate派生型を定義しました。しかしC#コードのビルドは可能ですがXAMLでプロパティを設定すると、

プロパティ 'Fuga' は、テンプレートのプロパティ要素として設定できません。Triggers と Storyboards だけをプロパティ要素として使用できます。

と出力されてしまいます。Visual Studio 2013と.NET4.5.1で条件を変えて試したところ、

  1. 元の事象→NG

C#

public class HogeDataTemplate : DataTemplate
{
   public BindingBase Fuga { get; set; }
}

XAML

<c:CustomControl1>
    <c:CustomControl1.HogeTemplate>
        <c:HogeDataTemplate Fuga="{Binding Piyo}" />
    </c:CustomControl1.HogeTemplate>
</c:CustomControl1>
  1. Resourcesに記述した場合→NG

XAML

<Window>
    <c:Window.Resources>
        <c:HogeDataTemplate x:Key="hoge" Fuga="{Binding Piyo}" />
    </c:Window.Resources>
</Window>
  1. {Binding}以外のマークアップ拡張を使用した場合→NG

XAML

<c:HogeDataTemplate Fuga="{x:Null}" />
  1. プリミティブ型に変更した場合→OK

C#

public class HogeDataTemplate : DataTemplate
{
   public int Fuga { get; set; }
}

XAML

<c:HogeDataTemplate Fuga="123" />
  1. 要素記法を使用した場合→OK

XAML

<c:HogeDataTemplate>
    <c:HogeDataTemplate.Fuga>123</c:HogeDataTemplate.Fuga>
</c:HogeDataTemplate>
  1. 要素記法で型を明示した場合→NG

XAML

<c:HogeDataTemplate>
    <c:HogeDataTemplate.Fuga>
        <sys:Int32>123</sys:Int32>
    </c:HogeDataTemplate.Fuga>
</c:HogeDataTemplate>

と、文字列でプロパティを記述することのみ可能であるように思われました。HierarchicalDataTemplateの実装では特にカスタム属性などを指定してはいないのでBAML変換ランタイムでDataTemplate専用の最適化がかかっている影響ではないかと思いますが、Styleでバインドさせる以外の回避方法は無いでしょうか。