これは複雑なものです。目的の結果を得るには、ScrollViewer のいくつかのプロパティを操作する必要があります。
これが私を助けたコードのスニペットです:
Point realSize = new Point(this.canvasAreas.ActualHeight, this.canvasAreas.ActualWidth);
Point sizeAvailable = new Point(this.scroolMain.ActualHeight, this.scroolMain.ActualWidth);
double scaleX = sizeAvailable.X / realSize.X;
double scaleY = sizeAvailable.Y / realSize.Y;
double newScale = Math.Round(Math.Min(scaleX, scaleY), 2);
this.gridScaleZoom.ScaleX = newScale;
this.gridScaleZoom.ScaleY = newScale;
CodeProject に関するいくつかの記事と、ScrollViewer ズームの操作に役立つ Google での検索があります。ほとんどは複雑で複雑ですが。これが少し役立つことを願っています。