Il y a une très bonne raison de ne pas utiliser le ActualWidth
à lier (évidemment ActualHeight
en conséquence). Lorsque vous réglez le Width
d'un élément, à la ActualWidth
d'un autre que vous pouvez briser la chaîne de mise en page .
Dans le meilleur des cas, votre élément/contrôle doit être analysé après la fin du processus de mise en page du parent (la source de liaison). Cela signifie un temps supplémentaire. S'il se trouve au même niveau hiérarchique que le parent, le processus de mise en page doit être exécuté deux fois (au moins) pour calculer une taille définitive.
Par exemple, j'avais un contrôle dont la propriété de taille était surchargée dans un style qui la définissait comme étant la valeur TemplatedParent
(ne pas faire) :
<Rectangle DockPanel.Dock="Top" Width="{TemplateBinding ActualWidth}"
Height="1" Fill="#000000"/>
Lors du redimensionnement de la fenêtre qui le contient, le contrôle empêchait le conteneur de devenir plus petit et freinait la mise en page. En le réglant sur la valeur Width
résoudra le problème (faire) :
<Rectangle DockPanel.Dock="Top" Width="{TemplateBinding Width}"
Height="1" Fill="#000000"/>
Si vous devez utiliser le ActualWidth
en général, il y a un problème avec votre xaml. Il vaut mieux corriger cela plutôt que de semer la pagaille avec les tailles finales de la mise en page.