Frage

Neu auf WPF und haben Tabs und in jedem Registerkarte wird der Inhalt in einem gekrümmten Eckpaneel / Fenster / whateveryouwannacallit präsentiert. Ich war nicht sicher, wie dieser (Style, Control) zu tun, sondern beschlossen, den Datatemplate Weg zu gehen.

So, jetzt habe ich diese 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>

Wie Sie mit dem die Hintergrundeigenschaft sehen kann ich wan't die Hintergrundfarbe auf den Inhalt zu setzen, aber nicht wissen, wie. Hier verwende ich es.

<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>

Ist mit Datatemplate hier falsch oder gibt es eine andere Art und Weise?

ich wahrscheinlich den Hintergrund gerade auf den Inhalt und die Änderung von padding in mthe Vorlage Marge im Inhalt, sondern in einigen ähnlichen Situationen einstellen könnte, die nicht nur Arbeit und schöner ist es hätte es einmal eingestellt werden.

EDIT:

Wie pro Beratung wechselte ich zu Control und es auch in einem Stil setzen. Dies löst das Problem Hintergrund, sondern schafft eine größere. Nun wird der Inhalt nicht angezeigt. Ich las auf einem Blog hier dass eine target setzen dies löst aber es hat mein Problem nicht lösen. Der Code sieht wie folgt aus jetzt und auch die Content veränderte den Stil statt Template zu verwenden.

<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>
War es hilfreich?

Lösung

Mit Control statt 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>

Vorlage verwenden anstelle von Content

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

Andere Tipps

sein kann, weil TemplateBinding nicht mit Datatemplate funktioniert. Sehen Sie sich diese Frage für Details .

Auch wenn es funktioniert, alles, was Sie brauchen, ist ein Control und kein Datatemplate.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top