datatype - wpf template free




Différence entre le modèle de contrôle et DataTemplate dans WPF (4)

Quelle est la différence entre un ControlTemplate et un DataTemplate dans WPF?


Généralement, un contrôle est rendu pour lui-même et ne reflète pas les données sous-jacentes. Par exemple, un Button ne serait pas lié à un objet métier - il est purement là pour pouvoir être cliqué. Un ContentControl ou ListBox , cependant, apparaissent généralement de sorte qu'ils puissent présenter des données pour l'utilisateur.

Un DataTemplate donc utilisé pour fournir une structure visuelle pour les données sous-jacentes, tandis qu'un ControlTemplate n'a rien à voir avec les données sous-jacentes et fournit simplement une disposition visuelle pour le contrôle lui-même.

Un ControlTemplate ne contient généralement que des expressions TemplateBinding , reliant les propriétés sur le contrôle lui-même, tandis qu'un DataTemplate contient des expressions Binding standard, se liant aux propriétés de son DataContext (l'objet métier / domaine ou le modèle de vue).


Très fondamentalement un ControlTemplate décrit comment afficher un contrôle alors qu'un DataTemplate décrit comment afficher des données.

Par exemple:

Une Label est un contrôle et comprendra un ControlTemplate qui indique que l' Label doit être affichée en utilisant une Border autour de certains contenus (un DataTemplate ou un autre contrôle).

Une classe Customer est Data et sera affichée à l'aide d'un DataTemplate qui pourrait indiquer d'afficher le type de Customer comme un StackPanel contenant deux TextBlocks un affichant le nom et l'autre affichant le numéro de téléphone. Il peut être utile de noter que toutes les classes sont affichées à l'aide de DataTemplates , vous utiliserez simplement le modèle par défaut qui est un TextBlock avec la propriété Text définie sur le résultat de la méthode ToString de l'objet.


ControlTemplate - Modification de l'apparence de l'élément. Par exemple, le Button peut contenir une image et du texte

DataTemplate - Représente les données sous-jacentes en utilisant les éléments.


ControlTemplate : Représente le style de contrôle.

DataTemplate : Représente le style de données (comment souhaitez-vous afficher vos données).

Tous les contrôles utilisent le modèle de contrôle par défaut que vous pouvez remplacer par la propriété de modèle.

Par exemple
Button modèle de Button est un modèle de contrôle. Button modèle de contenu de Button est un modèle de données

<Button   VerticalAlignment="Top" >
    <Button.Template>
        <ControlTemplate >
            <Grid>
                <Rectangle Fill="Blue" RadiusX="20" RadiusY="20"/>
                <Ellipse Fill="Red" />
                <ContentPresenter Content="{Binding}">
                    <ContentPresenter.ContentTemplate>
                        <DataTemplate>
                        <StackPanel Orientation="Horizontal" Height="50">
                            <TextBlock Text="Name" Margin="5"/>
                                <TextBox Text="{Binding UserName, Mode=TwoWay}" Margin="5" Width="100"/>
                            <Button Content="Show Name" Click="OnClickShowName" />
                        </StackPanel>
                    </DataTemplate>
                    </ContentPresenter.ContentTemplate>
                </ContentPresenter>
            </Grid>
        </ControlTemplate>
    </Button.Template>
</Button>

public String UserName
{
    get { return userName; }
    set
    {
        userName = value;
        this.NotifyPropertyChanged("UserName");
    }
}






controltemplate