Je pensais que la syntaxe de propriété d'élément et la syntaxe de propriété d'attribut n'ont pas de grande différence sémantique. Cependant, j'ai trouvé qu'il devait y avoir une différence.Y a-t-il une différence sémantique entre la syntaxe de propriété d'élément et la syntaxe de propriété atrribute?
E.g. L'exemple suivant montre juste un déclencheur simple:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button><Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<TextBlock x:Name="hello" Text="Hello" />
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red" TargetName="hello"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template></Button>
</Page>
Cependant, si j'utilisé une syntaxe de propriétés d'élément pour la propriété Property
de déclenchement, il lance une exception en disant que setter! (pas trigger) nécessite à la fois la propriété et la valeur.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button><Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<TextBlock x:Name="hello" Text="Hello" />
<ControlTemplate.Triggers>
<Trigger Value="True">
<Trigger.Property>IsMouseOver</Trigger.Property>
<Setter Property="Foreground" Value="Red" TargetName="hello"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template></Button>
</Page>
Alors, quel est le caché différence entre la syntaxe de la propriété d'éléments et syntaxe d'attribut de propriété?