2010-04-30 9 views
10

Pourquoi ne puis-je pas créer un déclencheur et l'utiliser en tant que ressource statique dans XAML?Déclencheur XAML en tant que StaticResource

<Window.Resources> 
    <Trigger x:Key="ValidationTrigger" x:Shared="False" Property="Validation.HasError" Value="true"> 
     <Setter Property="FrameworkElement.ToolTip" 
       Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
       Path=(Validation.Errors)/ErrorContent}"/> 
    </Trigger> 

    <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}"> 
     <Style.Triggers> 
      <StaticResource ResourceKey="ValidationTrigger"/> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 

je reçois un errormessage lors de l'exécution
"La valeur ne peut être nulle
Nom du paramètre:. TriggerBase Erreur à l'objet 'System.Windows.Markup.StaticResourceHolder' dans le fichier de balisage"

+0

Bonne question :) Je voudrais connaître la réponse à celui-ci. – JeroenEijkhof

+0

Comme l'indique l'erreur: l'initialisation pour le dictionnaire de ressources tente de passer null comme valeur pour un paramètre. Comme le trigger a un constructeur sans paramètre, je pense que l'erreur provient de la liaison que vous essayez d'utiliser. Comment RelativeSource.Self est-il résolu dans ce cas d'utilisation spécifique? –

Répondre

0

J'imagine que c'est parce que les ressources sont chargées en premier. Dans ce cas, WPF essaiera de charger votre déclencheur avant tout contrôle auquel il pourrait être associé. La valeur de déclenchement ne peut alors pas être évaluée à ce moment-là.

Mais cela doit être confirmé :)

Questions connexes