Es gibt einen sehr guten Grund nicht die ActualWidth
zu verwenden, um (natürlich ActualHeight
entsprechend) zu binden. Wenn Sie die Width
eines Elements auf die ActualWidth
eines anderen setzen, können Sie die Layout-Kette brechen.
Im besten Fall muss Ihr Element/Steuerelement analysiert werden, nachdem der Layoutprozess des übergeordneten Elements (der Bindungsquelle) beendet wurde. Das bedeutet zusätzliche Zeit. Wenn es sich auf der gleichen Hierarchieebene wie das übergeordnete Element befindet, benötigt der Layoutprozess mindestens zwei Durchläufe, um eine endgültige Größe zu berechnen.
Zum Beispiel hatte ich eine Steuerung, die in einem Stil überschrieben es Leimeigenschaft hatte, dass es in die TemplatedParent
(nicht tun) gesetzt würde:
<Rectangle DockPanel.Dock="Top" Width="{TemplateBinding ActualWidth}"
Height="1" Fill="#000000"/>
Wenn Ändern der Größe der enthält Fenster, die Steuer würde verhindern, dass der Behälter kleiner wird und das Layout bremst. um es in die Width
Einstellung wird das Problem (do) lösen:
<Rectangle DockPanel.Dock="Top" Width="{TemplateBinding Width}"
Height="1" Fill="#000000"/>
Wenn Sie mit Ihrem XAML die ActualWidth
im Allgemeinen etwas falsch verwenden. Besser beheben, anstatt mit den endgültigen Größen des Layout-Laufs herumzuspielen.
Es ist eigentlich die Layoutgröße nicht die gerenderte Größe. – chuckj
@chuckj, welches Attribut würde man verwenden, um die gerenderte Größe zu erhalten? – dumbledad
@dumbledad '.RenderSize.Width' – Mafii