の WinRT バージョンにはパブリックプロパティDataTemplate
がありません。Template
はContentProperty
として指定されているTemplate
ので、次のように変更してみました。
[ContentProperty(Name = "MyTemplate")]
Template
ただし、エラーは解決しません。コード生成は、XamlTypeInfo.g.cs から、同じようにプロパティのエントリを追加しようとします。
userType.AddMemberName("MyTemplate");
userType.AddMemberName("Template");
別のコンテンツ プロパティを使用するには、非DataTemplate
サブクラスを使用してtype のTemplate
との両方を定義します。またはサブクラス化を続行し、ダミープロパティを実装し、別のプロパティを使用して実際のコンテンツ テンプレートをホストします。これはプッシュ時に使用できる可能性がありますが、テンプレートをタイプ プロパティで使用することはできません。ItemTemplate
DataTemplate
DataTemplate
Template
MyTemplate
DataTemplate
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 パーサーによって特別に処理されます。
あまり期待できそうにありません。