title: Cannot set width or height of animated control in WPF programmatically (not even through Snoop)
body: <p>This may be animation related. I have a WPF control whose width and height I'm animating through several different storyboards. I create the storyboards and then call Begin() on them. I've provided code for how the storyboards look below.</p>
  
  <p>I want to re-evaluate the control size on some event (e.g. window resize) so that it is different from the value that was animated. I attempt to handle this on SizeChanged manually (after the animation has run) by setting the <code>Width</code> and <code>Height</code> properties of my control. The debugger shows that those values are not set (the original values remain).</p>
  
  <p>When I inspect the WPF through Snoop, the Width and Height rows are highlighted in a peach/orange color and trying to set the values through it again does not persist it (the original value is shown when I focus away. My guess is that my animation is somehow overriding manual changes to the property but I'm not sure if this is true or how to solve it.</p>
  
  <p><strong>Storyboard Class</strong></p>
  
  <pre><code>public class MyAnimationClass
  {
      private Storyboard _myStoryboard;
      private DoubleAnimation _animation1;
      private DoubleAnimation _animation2;
      private DoubleAnimation _animation3;
  
      private void InitializeStoryboard()
      {
          _myStoryboard = CreateMyStoryboard(out _animation1, out _animation2, out _animation3);
      }
  
      private Storyboard CreateMyStoryboard(out DoubleAnimation animation1, out DoubleAnimation animation2, out DoubleAnimation animation3)
      {
          var myStoryboard = new Storyboard();
  
          // create animations
          animation1 = new DoubleAnimation { Duration = new TimeSpan(0, 0, 0, 0, 250), From = 0, To = 0 };
          animation2 = new DoubleAnimation { BeginTime = new TimeSpan(), Duration = new TimeSpan(0, 0, 0, 0, 250), From = 35, To = 35 };
          animation3 = new DoubleAnimation { BeginTime = new TimeSpan(0, 0, 0, 0, 250), Duration = new TimeSpan(0, 0, 0, 0, 250), From = 35, To = 0 };
  
          Storyboard.SetTargetProperty(animation1, new PropertyPath(FrameworkElement.WidthProperty));
          Storyboard.SetTargetProperty(animation2, new PropertyPath(FrameworkElement.HeightProperty));
          Storyboard.SetTargetProperty(animation3, new PropertyPath(FrameworkElement.HeightProperty));
  
          myStoryboard.Children.Add(animation1);
          myStoryboard.Children.Add(animation2);
          myStoryboard.Children.Add(animation3);
  
          return myStoryboard;
      }
  
      public void Animate(Control controlToAnimate)
      {
          // ....
  
          var finalWidth = CalculateFinalWidth();
          var finalHeight = CalculateFinalHeight();
  
          _animation1.To = finalWidth;
          _animation3.To = finalHeight;
          _myStoryboard.Begin(controlToAnimate);
      }
  }
  </code></pre>
  
  <p>When I want to animate something, I call <code>Animate()</code> on the instance of my <code>MyAnimationClass</code> class.</p>
  
  <p>Thoughts?</p>