2010-04-30 37 views
10

爲什麼我無法創建觸發器並將其用作XAML中的靜態資源?XAML觸發器爲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> 

我會在運行時errormessage的
「值不能爲空
參數名:在對象System.Windows.Markup.StaticResourceHolder「的標記文件triggerBase錯誤」

+0

好問題:)我想知道這個答案。 – JeroenEijkhof 2010-09-02 19:34:27

+0

由於錯誤狀態:資源字典的initliazation嘗試將null作爲參數值傳遞。由於觸發器有一個無參數的構造函數,我認爲這個錯誤源於你正在嘗試使用的綁定。 RelativeSource.Self如何解決這個特定的用例? – 2015-09-14 12:24:52

回答

0

我想象這是因爲資源首先被加載。

因此,在這種情況下,WPF會嘗試加載您的觸發器,然後再對其進行任何控制。然後當時不能評估觸發值。

但需要確認:)