【问题标题】:Setting a ViewModel boolean property inside a storyboard在情节提要中设置 ViewModel 布尔属性
【发布时间】:2012-03-26 21:52:14
【问题描述】:

我有一个由 ViewModel 中的属性触发的情节提要,这会触发动画开始。 但是如何在动画完成后将“已保存”属性设置回 False(以触发 ExitAction。)

<Style TargetType="TextBlock" x:Key="FadeInOut">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Saved}" Value="True">
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="0" To="1" />
                            <!-- set "Saved" to false when done -->
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
                <DataTrigger.ExitActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="1" To="0"  />
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.ExitActions>
            </DataTrigger>
        </Style.Triggers>
    </Style>

【问题讨论】:

    标签: wpf binding storyboard


    【解决方案1】:

    如果您可以导航到您的财产,我会推荐 BooleanAnimationUsingKeyFrames 在您结束时使用离散框架。

    <BooleanAnimationUsingKeyFrames
                Storyboard.TargetProperty="DataContext.Saved"
                FillBehavior="HoldEnd">
                <DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:1" />
    </BooleanAnimationUsingKeyFrames>
    

    由于您使用到 Saved 的绑定,我假设使用 DataContext 应该可以工作。

    【讨论】:

      【解决方案2】:

      您可以使用 ObjectAnimationUsingKeyFrames 来设置属性。我不太确定你是否可以使用其他动画,但这是我最近使用的。

          <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Saved">
              <DiscreteObjectKeyFrame KeyTime="0">
                  <DiscreteObjectKeyFrame.Value>
                      <system:Boolean>False</system:Boolean>
                  </DiscreteObjectKeyFrame.Value>
              </DiscreteObjectKeyFrame>
          </ObjectAnimationUsingKeyFrames>
      

      【讨论】:

      • 请问必须在 EnterAction 中设置吗?
      • @advapi:对不起,我不明白你的问题。这可能是因为我已经多年不在 .NET 领域了。据我记得,这段代码必须进入故事板。希望对您有所帮助。
      猜你喜欢
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      相关资源
      最近更新 更多