代码之家  ›  专栏  ›  技术社区  ›  Richard McGuire

数据触发器不会触发

  •  2
  • Richard McGuire  · 技术社区  · 15 年前

    我在控件模板上设置了以下数据触发器

    <DataTrigger Binding="{Binding Path=IsDragged}"
                 Value="True">
        <DataTrigger.EnterActions>
            <BeginStoryboard Storyboard="{StaticResource Active}" />
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
            <BeginStoryboard Storyboard="{StaticResource Unactive}" />
        </DataTrigger.ExitActions>
    </DataTrigger>
    

    一般来说,它至少会发射一次(不一定总是),并且在某一点上会停止。一些其他有趣的注释:

    • 在多数据触发器中设置了相同的属性,此触发器将始终激发
    • 相同的故事板在另一个触发器中被引用,它们在该触发器失败后继续运行

    编辑:多重数据触发器的设置如下:

    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <Condition Binding="{Binding Path=IsActive}"
                       Value="True" />
            <Condition Binding="{Binding Path=IsDragged}"
                       Value="False" />
            <Condition Binding="{Binding Path=IsInCart}"
                       Value="False" />
        </MultiDataTrigger.Conditions>
        <MultiDataTrigger.EnterActions>
            <BeginStoryboard x:Name="ShowTag_BeginStoryboard"
                             Storyboard="{StaticResource ShowTag}" />
        </MultiDataTrigger.EnterActions>
        <MultiDataTrigger.ExitActions>
            <BeginStoryboard x:Name="HideTag_BeginStoryboard"
                             Storyboard="{StaticResource HideTag}" />
        </MultiDataTrigger.ExitActions>
    </MultiDataTrigger>
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   Charlie    15 年前

    只是一个有根据的猜测,但我以前遇到过类似的事情,结果是我需要在开始另一个故事板之前停止每个故事板,因为它们彼此冲突。

    尝试添加两个 StopStoryboard 对数据触发器的操作,一个用于停止活动的情节提要,另一个用于停止非活动的情节提要。