【问题标题】:Triggering an animation with a DataTrigger and binding使用 DataTrigger 和绑定触发动画
【发布时间】:2013-01-18 06:23:42
【问题描述】:

我正在尝试根据属性的值使网格“淡入”或“淡出”。该属性被调用,但动画似乎没有影响网格。我的网格和触发器如下所示:

<Grid Background="White"
      Opacity="0">
  <Grid.Style>
    <Style TargetType="Grid">
      <Style.Triggers>
        <DataTrigger Binding="{Binding IsWaiting}"
                     Value="False">
          <DataTrigger.EnterActions>
            <BeginStoryboard Name="pickIn">
              <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                 From="0"
                                 To="1"
                                 Duration="0:0:0.8" />
              </Storyboard>
            </BeginStoryboard>
          </DataTrigger.EnterActions>
          <DataTrigger.ExitActions>
            <StopStoryboard BeginStoryboardName="pickIn" />
          </DataTrigger.ExitActions>
        </DataTrigger>
        <DataTrigger Binding="{Binding IsWaiting}"
                     Value="True">
          <DataTrigger.EnterActions>
            <BeginStoryboard Name="pickOut">
              <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                 From="1"
                                 To="0"
                                 Duration="0:0:0.8" />
              </Storyboard>
            </BeginStoryboard>
          </DataTrigger.EnterActions>
          <DataTrigger.ExitActions>
            <StopStoryboard BeginStoryboardName="pickOut" />
          </DataTrigger.ExitActions>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Grid.Style>
  <Grid.Triggers>
    <EventTrigger RoutedEvent="Loaded">
      <BeginStoryboard>
        <Storyboard>
          <DoubleAnimation Storyboard.TargetProperty="Opacity"
                           From="0"
                           To="1"
                           Duration="0:0:0.8" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Grid.Triggers>
  <!-- etc -->
</Grid>

我的IsWaiting 属性如下所示:

public bool IsWaiting{
  get { return _isWaiting; }
  set {
    _isWaiting = value;
    OnPropertyChanged("IsWaiting");
  }
}

属性更改时输出日志中没有绑定错误。我做错了什么?

【问题讨论】:

  • 我只是复制粘贴了你的代码,它工作正常,我唯一改变的是持续时间,所以我可以看到它消失(我使用了0:0:5
  • @sa_ddam213 天哪,你是对的。事实证明,还有另一个动画干扰了它。我将更新我上面的代码以包含干扰代码。如果您想发表回复,我可以将其标记为答案。 &lt;Grid.Triggers&gt; 部分需要删除。

标签: .net wpf xaml mvvm


【解决方案1】:

&lt;Grid.Triggers&gt; 推翻了您的 &lt;Style.Triggers&gt;,您可以通过在网格加载时将 IsWaiting 设置为 true 来替换 &lt;Grid.Triggers&gt; 动画,或者将其设置为 true bu default。

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 2015-10-15
    • 2012-01-31
    • 2022-09-28
    • 2010-12-10
    • 2017-02-02
    • 2017-02-16
    相关资源
    最近更新 更多