2010-04-30 13 views
10

Dlaczego nie mogę utworzyć wyzwalacza i użyć go jako statycznego zasobu w XAML?Wyzwalacz XAML jako 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> 

dostaję ErrorMessage w czasie wykonywania
„wartość nie może być NULL nazwa
parametru. TriggerBase Błąd w obiekcie«System.Windows.Markup.StaticResourceHolder»w pliku znaczników”

+0

Dobre pytanie :) Chciałbym poznać odpowiedź na to pytanie. – JeroenEijkhof

+0

Jako błąd stwierdza: initliazation dla słownika zasobów próbuje przekazać null jako wartość dla parametru. Ponieważ wyzwalacz ma konstruktor bez parametrów, myślę, że błąd wynika z powiązania, którego próbujesz użyć. Jak działa RelativeSource.Self w tym konkretnym przypadku użycia? –

Odpowiedz

0

sobie wyobrazić, że dzieje się tak, ponieważ zasoby są ładowane jako pierwsze.

W tym przypadku WPF spróbuje załadować twój wyzwalacz przed jakąkolwiek kontrolą, z którą może być powiązany. Wtedy wartość wyzwalania nie może być oszacowana w tym czasie.

Ale to trzeba potwierdzić :)

Powiązane problemy