XAML触发器作为StaticResource

adr*_*anm 11 wpf xaml triggers

为什么我不能创建触发器并将其用作XAML中的静态资源?

<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>
Run Code Online (Sandbox Code Playgroud)

我在运行时得到一个错误消息
"值不能为null.
参数名称:标记文件中对象'System.Windows.Markup.StaticResourceHolder'的触发错误"

Bru*_*uno 1

我想这是因为资源首先被加载。

因此,在这种情况下,WPF 将尝试在可能与其关联的任何控件之前加载触发器。那么此时就无法评估触发值。

但这需要确认:)