这是一个非常基本的问题,我无法在网上任何地方找到简单的答案。在Windows应用商店xaml / c#app中,如果我创建名为Templated Control
的新CustomControl1.cs
。
这是Generic.xaml文件中定义的默认模板:
<Style TargetType="local:CustomControl1">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:CustomControl1">
<Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我应该能够通过以下两种方式之一设置上面Border
元素的Content属性来指定子内容的生存位置。
将内容指定为属性
<Border Child="{TemplateBinding Content}" />
将内容指定为元素
<Border>
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}" />
</Border>
但无论如何,每当我在其他地方使用新控件时,我都无法设置内容属性
使用此:
<local:CustomControl1>
<Button></Button>
</local:CustomControl1>
给出以下两个错误:
无法向“CustomControl1”类型的对象添加内容 “CustomControl1”类型不支持直接内容。
答案 0 :(得分:3)
确保从ContentControl派生您的类,而不仅仅是Control。这应该为你解决这个问题。默认的“模板化控件”项模板非常通用,可以处理人们可能需要的任何情况,因此如果您需要更多内容(在本例中为内容控件),只需更改为从ContentControl派生。
希望这有帮助!