Если вы ссылаетесь на образец ResizingAdorner на MSDN , то отправленный вами код технически верен, поскольку RichTextBox не будет больше вашего холста.
Что вы можете видеть, так это то, что при изменении размера текстового поля нижняя и правая стороны будут расширяться на 10 пикселей за границы холста. Это потому, что в XAML, который вы опубликовали, написано, что MaxHeight и MaxWidth в поле расширенного текста будут высотой / шириной холста.
Причина, по которой поле расширенного текста расширяется на 10 пикселей за пределы холста, заключается в том, что поле расширенного текста расположено в расположении холста Canvas.Top = "10" и Canvas.Left = "10".
Если вы установите для поля расширенного текста значение Canvas.Top = "0" Canvas.Left = "0", то увидите, что поле расширенного текста никогда не превысит границы холста.
Несколько замечаний по XAML и коду позади ...
Поскольку у вас есть именованный холст в вашем XAML, вам не нужно связывать с Find Ancestor, скорее вы можете просто использовать ElementName в своем связывании, т.е.
<RichTextBox ...
MaxWidth="{Binding ElementName=canvas,Path=ActualWidth}"
MaxHeight="{Binding ElementName=canvas,Path=ActualHeight}"/>
В коде сзади AdornerLayer должен быть вашим холстом, а не RichTextBox, т.е.
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(canvas);
adornerLayer.Add(new ResizeAdorner(richTextBox));