Учитывая следующий код XAML:WPF Constrain изменение размера холста дочерний объект с размерами холста
<Window x:Class="AdornerTesting.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="500" Width="500"
Loaded="Window_Loaded">
<Grid Name="grid">
<Canvas Name="canvas" Width="400" Height="400" Background="LightGoldenrodYellow">
<RichTextBox Name="richTextBox" Canvas.Top="10" Canvas.Left="10" BorderBrush="Black" BorderThickness="2"
Width="200"
Height="200"
MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Canvas}},Path=ActualWidth}"
MaxHeight="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Canvas}},Path=ActualHeight}"/>
</Canvas>
</Grid>
</Window>
и набор графических элементов, добавляемый в RichTextBox в нагруженном событии так:
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(richTextBox);
adornerLayer.Add(new ResizeAdorner(richTextBox));
Как я могу не изменять размер RichTextBox за пределы видимости холста?
ResizeAdorner - это, по сути, тот же код, который можно найти в примере MSDN adorner, и он отлично работает. Должен ли я что-то делать с привязками MaxWidth и MaxHeight в коде, чтобы рассчитать, как можно изменить размер RichTextBox? Или есть способ сделать это в XAML?
Да, изменяя первоначальное размещение управления на 0, 0 на банке s будет фиксировать перетаскивание вправо и нижнюю часть края холста. То, с чем я столкнулся, и то, что я не упомянул в моем первоначальном вопросе, изменил размер влево и вверх. Не знаю, как я не поместил это в первоначальный вопрос, но я этого не сделал. Оказывается, это был мой код изменения размера в тех направлениях, которые виноваты. Спасибо за советы по привязке XAML, привязывающий материал по-прежнему иногда меня бросает. – Scott