Here's an even simpler version, it simply scales a Canvas using a slider control.
You need two Canvas controls, one for the outer Canvas, to keep the controls all in the right size, then an inner Canvas, which you can add all your scalable content to...
The XAML
<
UserControl x:Class="SilverlightZoom.Page"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel>
<Slider x:Name="Slider1" ValueChanged="Slider1_ValueChanged" Maximum="10" Width="100"></Slider>
<Canvas Background="Blue" x:Name="Canvas1" Width="500" Height="500">
<Canvas Background="Blue" x:Name="Canvas2" Width="500" Height="500">
<TextBlock x:Name="TextBlock1" Foreground="White" Text="Canvas Text"></TextBlock>
<Canvas.RenderTransform>
<ScaleTransform x:Name="CanvasScaleTransform" ScaleX="2" ScaleY="2"></ScaleTransform>
</Canvas.RenderTransform>
</Canvas>
</Canvas>
</StackPanel>
</Grid></UserControl>
Then the Slider1_ValueChanged method...
private void Slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
TextBlock1.Text = Slider1.Value.ToString();
CanvasScaleTransform.ScaleX = Slider1.Value;
CanvasScaleTransform.ScaleY = Slider1.Value;
}