Thanks to Kurt Berglund for providing this sample.
THIS IS NOT THE ENTIRE SOURCE, ONLY KEY SNIPPETS.
<Window x:Class="Camera3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Camera3" Height="300" Width="300"
xmlns:local="clr-namespace:ConvertXaml" >
<Window.Resources>
<local:LookDirConverter x:Key="lookDirConverter" />
</Window.Resources>
<Viewport3D>
<Viewport3D.Triggers>
<EventTrigger RoutedEvent="Viewport3D.Loaded">
<BeginStoryboard>
<Storyboard>
<ParallelTimeline RepeatBehavior="Forever">
<Point3DAnimation From="4,8,12" To="12,8,4"
Storyboard.TargetName="myPerspectiveCamera"
Storyboard.TargetProperty="Position"
AutoReverse="True"
Duration="0:0:4"/>
<DoubleAnimation From="0" To="16"
Storyboard.TargetName="myObjToTrack"
Storyboard.TargetProperty="Transform.OffsetY"
AutoReverse="True"
Duration="0:0:4"/>
</ParallelTimeline>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Viewport3D.Triggers>
<Viewport3D.Camera>
<PerspectiveCamera x:Name="myPerspectiveCamera"
UpDirection = "0, 1, 0"
Position = "8, 8, 8"
FieldOfView = "60">
<PerspectiveCamera.LookDirection>
<MultiBinding Converter="{StaticResource
lookDirConverter}" Mode="OneWay">
<Binding ElementName="myPerspectiveCamera"
Path="Position" />
<Binding ElementName="myObjToTrack"
Path="Transform" />
</MultiBinding>
</PerspectiveCamera.LookDirection>
</PerspectiveCamera>
</Viewport3D.Camera>