Мне нужно изменить размер прямоугольника, размещенного на холсте, поэтому я унаследовал Canvas для использования MeasureOverride:
public class CustomCanvas : Canvas
{
public CustomCanvas() : base(){}
protected override Size MeasureOverride(Size availableSize)
{
Size canvasDesiredSize = new Size();
foreach (UIElement child in Children)
{
child.Measure(new Size(300, 300));
canvasDesiredSize = child.DesiredSize;
}
return canvasDesiredSize;
}
}
И использовал это:
<local:CustomCanvas Width="500" Height="800" Background="Gray">
<Rectangle Fill="AliceBlue" Height="100" Width="100"/>
</local:CustomCanvas>
Но после выполнения прямоугольник по-прежнему имеет размер 100 100 (как указано в XAML). При выполнении child.Measure(new Size(300, 300));
child.DesiredSize
показывает 0,0. Там происходит что-то странное.
Я использовал это в качестве ссылки.
child.DesiredSize
показывает 100 100 (как в XAML). - person Anthony   schedule 06.08.2014