« Template » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
(3 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 7 : | Ligne 7 : | ||
<Window.Resources> | <Window.Resources> | ||
<Style TargetType="{x:Type TextBox}"> | <Style TargetType="{x:Type TextBox}"> | ||
<Setter Property="Background" Value="Blue" /> | |||
<Setter Property="Template"> | <Setter Property="Template"> | ||
<Setter.Value> | <Setter.Value> | ||
<ControlTemplate TargetType="{x:Type TextBox}"> | <ControlTemplate TargetType="{x:Type TextBox}"> | ||
<Button Content="{TemplateBinding | <Button Content="{TemplateBinding Text}" | ||
Background="{TemplateBinding Background}" /> | |||
</ControlTemplate> | </ControlTemplate> | ||
</Setter.Value> | </Setter.Value> | ||
Ligne 33 : | Ligne 35 : | ||
= [https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/data-templating-overview DataTemplate] = | = [https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/data-templating-overview DataTemplate] = | ||
Allow to define the presentation of the data. | |||
== DataTemplate implicite == | == DataTemplate implicite == | ||
<kode lang='xaml'> | <kode lang='xaml'> | ||
Ligne 64 : | Ligne 68 : | ||
</kode> | </kode> | ||
== DataTemplate == | == DataTemplate with resource key == | ||
<kode lang='xaml'> | <kode lang='xaml'> | ||
<Window xmlns:local="clr-namespace:MyNamespace"> | <Window xmlns:local="clr-namespace:MyNamespace"> |
Dernière version du 8 novembre 2021 à 14:46
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="Background" Value="Blue" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TextBox}"> <Button Content="{TemplateBinding Text}" Background="{TemplateBinding Background}" /> </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
Allow to define the presentation of the data.
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}" /> |