2010-04-30 17 views
10

¿Por qué no puedo crear un disparador y usarlo como un recurso estático en XAML?disparador XAML como 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> 

Obtengo un ErrorMessage en tiempo de ejecución
"El valor no puede ser nulo nombre
Parámetro:. TriggerBase error en el objeto 'System.Windows.Markup.StaticResourceHolder' en el archivo de anotación"

+0

Buena pregunta :) Me gustaría saber la respuesta a esta. – JeroenEijkhof

+0

Como dice el error: la iniciación para el diccionario de recursos está tratando de pasar nulo como un valor para un parámetro. Como trigger tiene un constructor sin parámetros, creo que el error proviene del enlace que intentas usar. ¿Cómo se resuelve RelativeSource.Self en este caso de uso específico? –

Respuesta

0

Imagino que esto se debe a que los recursos se cargan primero.

Por lo tanto, en este caso, WPF intentará cargar su activador antes de cualquier control al que pueda estar asociado. Entonces, el valor de activación no se puede evaluar en ese momento.

Pero eso necesita ser confirmado :)

Cuestiones relacionadas