ContentPresenter ContentControl является пустым? - PullRequest
0 голосов
/ 11 июня 2018

В XAML я пытаюсь создать очень простой «контейнер содержимого», который содержит случайный элемент (в данном случае это TextBlock), но следующее содержимое просто пустое и не содержит TextBlock указанный элемент

Является ли ContentControl правильным элементом для использования в этом сценарии?

<ContentControl>
    <ContentControl.Content>
        <TextBlock Text="Hello" />
    </ContentControl.Content>
    <ContentControl.Template>
        <ControlTemplate>
            <Border Background="Red">
                <ContentPresenter />
            </Border>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>

1 Ответ

0 голосов
/ 11 июня 2018

Просто установите TargetType="ContentControl" на ControlTemplate:

<ContentControl>
    <ContentControl.Content>
        <TextBlock Text="Hello" />
    </ContentControl.Content>
    <ContentControl.Template>
        <ControlTemplate TargetType="ContentControl"> <!-- here -->
            <Border Background="Red">
                <ContentPresenter />
            </Border>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>

Чтобы сделать его многоразовым, вы можете объявить стиль ContentControl следующим образом:

<Style TargetType="ContentControl" x:Key="RedBorderContentControlStyle">
    <Setter Property="Background" Value="Red"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ContentControl">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                    <ContentPresenter
                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

и использовать егокак это:

<ContentControl Style="{StaticResource RedBorderContentControlStyle}">
    <TextBlock Text="Hello"/>
</ContentControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...