Daniel
Daniel

Reputation: 11044

Triggering an animation with a DataTrigger and binding

I'm trying to make a grid "fade in" or "fade out" depending on the value of a property. The property is getting called, but the animation doesn't seem to be affecting the grid. My grid and triggers look like:

<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>

My IsWaiting property looks like:

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

There are no binding errors in the output log when the property changes. What am I doing wrong?

Upvotes: 1

Views: 2017

Answers (1)

sa_ddam213
sa_ddam213

Reputation: 43596

The <Grid.Triggers> are overruling your <Style.Triggers> you can replace the <Grid.Triggers> animation by just setting IsWaiting to true when the grid loads or set it to true bu default.

Upvotes: 2

Related Questions