【问题标题】:WPF Triggers and StylesWPF 触发器和样式
【发布时间】:2010-06-04 00:12:12
【问题描述】:

我有一个 UserControl,在资源部分我有类似的代码

    <Style TargetType="{x:Type Viewbox}">

        <Style.Triggers>
            <Trigger Property="Viewbox.IsMouseOver" Value="True">
                <Setter Property="Viewbox.Effect" >
                    <Setter.Value>
                        <DropShadowEffect Color="DarkGray" Direction="45" BlurRadius="30"></DropShadowEffect>
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>

所以这适用于我在此控件中拥有的 ViewBox,

但是当我这样做时

<Viewbox.Triggers>
        <Trigger Property="Viewbox.IsMouseOver" Value="True">
            <Setter Property="Viewbox.Effect" >
                <Setter.Value>
                    <DropShadowEffect></DropShadowEffect>
                </Setter.Value>
            </Setter>
        </Trigger>
    </Viewbox.Triggers>

在视图框中我收到错误....

有没有办法在不使用样式的情况下向 ViewBox 添加本地触发器?

【问题讨论】:

    标签: wpf triggers


    【解决方案1】:

    来自MSDN

    触发器集合 仅建立在一个元素上 支持 EventTrigger,而不是属性 触发器(触发器)。如果您需要 属性触发器,您必须放置 这些在样式或模板中,并且 然后将该样式或模板分配给 元素要么直接通过 Style 属性,或间接地 通过隐式样式引用。

    【讨论】:

      【解决方案2】:

      FrameworkElements vs Styles 和 Templates 的 Triggers 集合接受不同类型的触发器。对于 FrameworkElement.Triggers,您只能使用 EventTrigger,通常用于启动动画。 Style、ControlTemplate 和 DataTemplate 触发器集合可以像您使用的那样使用更常见的 Trigger 和 DataTrigger。这是一个奇怪的设置,总感觉像是一个未完成的功能。您可以更改代码以使用情节提要从 EventTrigger 为 DropShadowEffect 上的属性设置动画,或者仅使用样式方法。

      【讨论】:

        猜你喜欢
        • 2010-10-15
        • 1970-01-01
        • 2011-09-20
        • 1970-01-01
        • 2012-06-02
        • 1970-01-01
        • 2019-07-22
        • 1970-01-01
        相关资源
        最近更新 更多