1

这是一个非常基本的问题,我在网上的任何地方都找不到简单的答案。在 Windows 应用商店 xaml/c# 应用程序中,如果我创建一个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>

但无论哪种情况,每当我在其他地方使用新控件时,我都无法设置 content 属性

使用这个:

<local:CustomControl1>
    <Button></Button>
</local:CustomControl1>

给出以下两个错误:

无法向“CustomControl1”类型的对象添加内容“CustomControl1”
类型不支持直接内容。

4

1 回答 1

3

确保您从 ContentControl 派生您的类,而不仅仅是 Control。这应该为您解决这个问题。默认的“模板化控件”项模板非常通用,可以处理人们可能想要的任何情况,因此如果您想要更多内容(在本例中为内容控件),只需更改为从 ContentControl 派生。

希望这可以帮助!

于 2013-08-11T21:37:01.840 回答