Существует очень веская причина не использовать ActualWidth
для привязки (очевидно, ActualHeight
соответственно).
Когда вы устанавливаете Width
элемента, на ActualWidth
другого вы можете разорвать цепочку макетов .
В лучшем случае ваш элемент / элемент управления необходимо проанализировать после завершения процесса компоновки родительского элемента (источника привязки). Это означает дополнительное время.
Если он находится на том же уровне иерархии, что и родительский, процессу макета требуется два прогона (как минимум) для вычисления окончательного размера.
Например, у меня был элемент управления, у которого свойство size было переопределено в стиле, который устанавливал бы его на TemplatedParent
(не делай) :
<Rectangle DockPanel.Dock="Top" Width="{TemplateBinding ActualWidth}"
Height="1" Fill="#000000"/>
При изменении размера содержащего окна элемент управления будет препятствовать уменьшению размера контейнера и нарушит компоновку. Установка Width
решит проблему (do) :
<Rectangle DockPanel.Dock="Top" Width="{TemplateBinding Width}"
Height="1" Fill="#000000"/>
Если вам нужно использовать ActualWidth
, в общем, что-то не так с вашим xaml. Лучше исправить это, вместо того, чтобы портить окончательные размеры макета.