Puede poner el lienzo dentro de un visualizador de desplazamiento. Probé esta prueba rápida y me permitió desplazarme por los contenidos del lienzo.
<ScrollViewer Height="100" Width="200">
<Canvas Height="400" Width="400">
//Content here
</Canvas>
</ScrollViewer>
editar: He aquí un ejemplo en el que las barras de desplazamiento aparecen sólo cuando sea necesario, y cambia dinámicamente a medida que cambia el tamaño del lienzo.
<Button Content="Change Canvas Size" Click="ChangeCanvasSize_Click"/>
<ScrollViewer Height="100" Width="200" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Canvas x:Name="TestCanvas">
<TextBlock Text="Test Test"/>
</Canvas>
</ScrollViewer>
Cambiar el tamaño del lienzo con el botón de clic:
private void ChangeCanvasSize_Click(object sender, RoutedEventArgs e)
{
TestCanvas.Width = 600;
TestCanvas.Height = 600;
}
En este ejemplo, comienzo a cabo sin barras de desplazamiento, y al hacer clic en el botón para ampliar el lienzo, barras de desplazamiento aparecen.
Gracias por su respuesta. Pero el problema es que no sé el tamaño de mi lienzo hasta el tiempo de ejecución. Entonces no puede tener un lienzo de tamaño fijo. Aumentaré la dimensión del lienzo si el usuario, por ejemplo, hace clic cerca del límite del lienzo existente, entonces el ancho y/o altura del lienzo aumentará en, por ejemplo, 50 unidades y aparecerá la barra de desplazamiento. – Scooby
Esto debería funcionar, si configura la visibilidad de las barras de desplazamiento en "Auto". Modifiqué mi ejemplo para ilustrar. –