title: ZoomExtents method call works different than activating ZoomExtents through gesture
body: <p>I've been working on a small 3D preview window in a MVVM style application...  The view is created then its data context is set.  Therefore it seems that ZoomExtentsWhenLoaded="True" doesn't seem to help do what I need.  I need something like, ZoomExtentsWhenDataContextChanges.  </p>
  
  <p>Interestingly, I've found that if I use a mouse gesture like the one defined below, I can physically click on the HelixViewport3D and it will perform a ZoomExtents.</p>
  
  <pre><code>HelixViewport3D.ZoomExtentsGesture = new MouseGesture(MouseAction.LeftDoubleClick);
  </code></pre>
  
  <p>However, if do something like this...</p>
  
  <pre><code>HelixViewport3D.DataContextChanged += (o, e) =&gt; ResetCamera();
  
  private void ResetCamera()
  {
      var dc = HelixViewport3D.DataContext as WellSurveyPlot3DViewModel;
      HelixViewport3D.ResetCamera();
      HelixViewport3D.Camera = dc.PerspectiveCamera;
      HelixViewport3D.ZoomExtents();
  }
  </code></pre>
  
  <p>The viewport does zoom, it just doesn't center itself, like it does when activating ZoomExtents when using the mouse gesture.  </p>
  
  <p>I tried ResetCamera, and several other things...  What is the standard way of dealing with keeping a viewport around and swapping out the DataContext instead of creating a new one each time?</p>