Вопрос

Новые для WPF и имеют вкладки и в каждой вкладке Контент представлен в изогнутой угловой панели / окне / Alky YouWannacallit. Я не был уверен, как это сделать (стиль, ControlTemplate), но решил пройти путь на DataTemplate.

Так что теперь у меня есть эта таблица данных:

<DataTemplate x:Key="TabContentPresenter" >
    <Border Margin="10"
            BorderBrush="{StaticResource DarkColorBrush}"
            CornerRadius="8"
            BorderThickness="2"
            Grid.Row="0"
            Padding="5" 
            Background="{TemplateBinding Background}">         

        <ContentPresenter Content="{Binding}" />

    </Border>
</DataTemplate>

Как вы можете видеть с фоновым свойством, я не хочу устанавливать цвет фона в контент, но не знаю, как. Вот я использую это.

<Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="120"/>
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <ContentControl ContentTemplate="{StaticResource TabContentPresenter}" Background="White">


                <!-- Something Here -->

            </ContentControl>

            <ContentControl ContentTemplate="{StaticResource TabContentPresenter}" Grid.Row="1" Background="Blue">

                <!-- Something Here -->

            </ContentControl>

        </Grid>

Использование данных DataTemplate неправильно здесь или есть в другом пути?

Возможно, я мог бы установить фон прямо на содержание и изменение от прокладки в шаблоне MTHE в маржинать в контент, но в некоторых спустях ситуациях, которые не будут работать, и это приятнее только придеться только один раз.

РЕДАКТИРОВАТЬ:

Согласно совету я изменился на ControlTemplate, а также положить его в стиль. Это решает справочную проблему, но создает больше. Теперь контент не появится. Я читаю в блоге здесь Это положив Targettype, решает это, но это не решило мою проблему. Код выглядит так, как сейчас выглядит, а также изменил ContentControl для использования стиля вместо шаблона.

<Style x:Key="TabContentPresenter" TargetType="ContentControl" >
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ContentControl">
                <Border Margin="10"
            BorderBrush="{StaticResource DarkColorBrush}"
            CornerRadius="8"
            BorderThickness="2"
            Grid.Row="0"
            Background="{TemplateBinding Background}">

                    <ContentPresenter Content="{Binding}" />

                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Это было полезно?

Решение

Используйте ControlTemplate вместо DataTemplate

 <ControlTemplate  x:Key="TabContentPresenter">
        <Border Margin="10" 
                    CornerRadius="8" 
                    BorderThickness="2" 
                    Grid.Row="0" 
                    Padding="5"  
                    Background="{TemplateBinding Background}">
            <ContentPresenter Content="{Binding}"/>
        </Border>
    </ControlTemplate>

Используйте шаблон вместо CenterTemplate

<ContentControl  Background="Green" Template="{StaticResource  TabContentPresenter}"/>

Другие советы

Может быть, потому, что TemplateBinding не работает с dataTemplate. Проверьте этот вопрос для получения подробной информации.

Даже если это работает, все, что вам нужно, это ControlTemplate И не таблица данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top