为了账号安全,请及时绑定邮箱和手机立即绑定

与 Storyboard 的交互行为和 DataTrigger 不起作用

与 Storyboard 的交互行为和 DataTrigger 不起作用

C#
慕森卡 2023-05-14 16:15:42
我正在开发 UWP 应用程序,并且正在尝试实施 MVVM 方法。基本上,当 Binding 的值在运行时发生变化时,我试图运行 Storyboard。到目前为止,我想出了以下内容:<UserControl    ...    xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"    xmlns:Core="using:Microsoft.Xaml.Interactions.Core"    xmlns:Media="using:Microsoft.Xaml.Interactions.Media">    <UserControl.Resources>        <Storyboard x:Name="cValueSB" AutoReverse="True" RepeatBehavior="3">            <DoubleAnimation To="0" Duration="0:0:0.5" Storyboard.TargetName="cvalue" Storyboard.TargetProperty="(UIElement.Opacity)"/>        </Storyboard>        <Storyboard x:Name="hValueSB" AutoReverse="True" RepeatBehavior="3">            <DoubleAnimation To="0" Duration="0:0:0.5" Storyboard.TargetName="hvalue" Storyboard.TargetProperty="(UIElement.Opacity)"/>        </Storyboard>        <Storyboard x:Name="lValueSB" AutoReverse="True" RepeatBehavior="3">            <DoubleAnimation To="0" Duration="0:0:0.5" Storyboard.TargetName="lvalue" Storyboard.TargetProperty="(UIElement.Opacity)"/>        </Storyboard>        <Storyboard x:Name="nValueSB" AutoReverse="True" RepeatBehavior="3">            <DoubleAnimation To="0" Duration="0:0:0.5" Storyboard.TargetName="nvalue" Storyboard.TargetProperty="(UIElement.Opacity)"/>        </Storyboard>    </UserControl.Resources>    <Grid>        <VisualStateManager.VisualStateGroups>            <VisualStateGroup>                <VisualState x:Name="large">                    <VisualState.StateTriggers>                        <AdaptiveTrigger MinWindowWidth="{StaticResource ScreenWidthSixForty}"/>                    </VisualState.StateTriggers>我面临的问题是,当 Binding 的值发生变化时,动画无法正常工作。除非绝对必要,否则我想尽可能避免任何直接代码隐藏。这甚至是正确的方法吗?我是 Xaml Behaviors 的新手,所以希望在实现它方面得到一些帮助。如果有更完善的方法来实现上述目标,我很乐意知道。谢谢。
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

当行为绑定到的数据满足指定条件时,将触发 DataTriggerBehavior。您只是绑定到属性,但没有指定任何条件来触发此行为。


基本上,当 Binding 的值在运行时发生变化时,我试图运行 Storyboard。


根据您的要求,您需要添加ComparisonCondition="NotEqual",如果您有一个固定值与绑定属性值进行比较,您可以添加Value=xxx.


<Interactivity:Interaction.Behaviors>

    <Core:DataTriggerBehavior Binding="{Binding CurrentValue, Mode=OneWay, UpdateSourceTrigger=Default}" ComparisonCondition="NotEqual">

        <Media:ControlStoryboardAction

                    Storyboard="{StaticResource cValueSB}"

                    ControlStoryboardOption="Play"/>

    </Core:DataTriggerBehavior>

</Interactivity:Interaction.Behaviors>


查看完整回答
反对 回复 2023-05-14
  • 1 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信