Template
De Banane Atomic
Aller à la navigationAller à la recherche
Définition
Permet de changer la manière dont seront dessinés les objets graphiques.
ControlTemplate embarqué dans un style
<Window.Resources> <Style TargetType="{x:Type TextBox}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TextBox}"> <Button Content="{TemplateBinding Property=Text}"/> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> |
ControlTemplate sans style
<Window.Resources> <!-- Définit un Template en dehors d'un style : une clé doit être définie --> <ControlTemplate x:Key="templateToButton" TargetType="{x:Type TextBox}"> <!-- Lie la propriété Content du Button avec la propriété Text du TextBox --> <Button Content="{TemplateBinding Text}" /> </ControlTemplate> </Window.Resources> <!-- Applique le template via la clé --> <TextBox Template="{StaticResource templateToButton}" /> |
DataTemplate
DataTemplate implicite
<Window.Resources> <!-- Ce DataTemplate s'applique à tous les MonItem --> <DataTemplate DataType="{x:Type local:MonItem}"> <Button Content="{Binding Text}"></Button> </DataTemplate> </Window.Resources> <ItemsControl ItemsSource="{Binding Items}"></ItemsControl> |
public class MonViewModel { public MonViewModel() { Items = new List<MonItem>(); Items.Add(new MonItem() { Text = "AAA" }); Items.Add(new MonItem() { Text = "BBB" }); Items.Add(new MonItem() { Text = "CCC" }); } public List<MonItem> Items { get; set; } } public class MonItem { public string Text { get; set; } } |
DataTemplate with resource key
<Window xmlns:local="clr-namespace:MyNamespace"> <Window.Resources> <DataTemplate x:Key="myDataTemplate" DataType="{x:Type local:Item}"> <TextBlock Text="{Binding Name}"></TextBlock> </DataTemplate> </Window.Resources> <ItemsControl ItemsSource="{Binding myItems}" ItemTemplate="{StaticResource myDataTemplate}" /> |