1

これは非常に基本的な質問で、オンラインのどこにも簡単な答えが見つかりません。Windows ストアの xaml/c# アプリでTemplated ControlCustomControl1.cs.

Generic.xaml ファイルで定義されている既定のテンプレートを次に示します。

<Style TargetType="local:CustomControl1">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:CustomControl1">
                <Border>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Border次の 2 つの方法のいずれかで上記の要素の Content プロパティを設定することで、子コンテンツが存在する場所を指定できるはずです。

コンテンツを属性として指定

<Border Child="{TemplateBinding Content}" />

要素として内容を指定

<Border>
    <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}"
                      Content="{TemplateBinding Content}" />
</Border>

しかし、どちらの場合でも、新しいコントロールを別の場所で使用するたびに、コンテンツ プロパティを設定できません。

これを使用して:

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

次の 2 つのエラーが発生します。

タイプ「CustomControl1」のオブジェクトにコンテンツを追加できません
タイプ「CustomControl1」は直接コンテンツをサポートしていません。

4

1 に答える 1

3

Control だけでなく、ContentControl からクラスを派生させてください。これで解決するはずです。デフォルトの「テンプレート化されたコントロール」項目テンプレートは、人々が望むあらゆるケースを処理するために非常に一般的です。

お役に立てれば!

于 2013-08-11T21:37:01.840 に答える