の WinRT バージョンにはパブリックプロパティDataTemplateがありません。TemplateはContentPropertyとして指定されているTemplateので、次のように変更してみました。
[ContentProperty(Name = "MyTemplate")]
Templateただし、エラーは解決しません。コード生成は、XamlTypeInfo.g.cs から、同じようにプロパティのエントリを追加しようとします。
userType.AddMemberName("MyTemplate");
userType.AddMemberName("Template");
別のコンテンツ プロパティを使用するには、非DataTemplateサブクラスを使用してtype のTemplateとの両方を定義します。またはサブクラス化を続行し、ダミープロパティを実装し、別のプロパティを使用して実際のコンテンツ テンプレートをホストします。これはプッシュ時に使用できる可能性がありますが、テンプレートをタイプ プロパティで使用することはできません。ItemTemplateDataTemplateDataTemplateTemplateMyTemplateDataTemplate
DataTemplateサブクラスを機能させようとして、次のタイプのプロパティを追加してみましTemplateたobject:
public class HierarchicalDataTemplate : DataTemplate
{
public object Template
{
get { return (object)GetValue(TemplateProperty); }
set { SetValue(TemplateProperty, value); }
}
public static readonly DependencyProperty TemplateProperty =
DependencyProperty.Register("Template", typeof(object), typeof(HierarchicalDataTemplate), new PropertyMetadata(null));
// ItemTemplate...
}
これは Visual Studio デザイナーでは機能しますが、実行時には機能しません。
<local:HierarchicalDataTemplate x:Key="t1">
<TextBlock Text="SUCCESS" />
</local:HierarchicalDataTemplate>
FrameworkTemplateドキュメントから:
FrameworkTemplate には、その XAML コンテンツ プロパティの名前が "Template" であることを示す ContentPropertyAttribute があります。FrameworkTemplate はその名前のプロパティを定義しておらず、実用的な使用法を持つその派生型 (ControlTemplate、DataTemplate) も定義していません。FrameworkTemplate のコンテンツは、テンプレートの適用時に作成する必要があるルート要素であり、オブジェクト モデルの従来のプロパティではありません。FrameworkTemplate のコンテンツは、コンテンツがテンプレートから作成されるときに、XAML パーサーによって特別に処理されます。
あまり期待できそうにありません。