Mam ten fragment kodu XAML:WPF sterowania rzeczywisty rozmiar
<Window x:Class="SizingTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Label x:Name="theLabel" Width="Auto">A very large label with a lot of text</Label>
</Grid>
</Window>
W kodzie za próbuję uzyskać etykietę za rzeczywistą szerokość, myślałem
theLabel.ActualWidth
zrobi to sztuczka, ale po wykonaniu tego kodu:
public Window1()
{
InitializeComponent();
double width = theLabel.ActualWidth;
}
wartość szerokości wynosi 0, ja również sprawdzane theLabel.Width, która zwraca NaN, theLabel.Desir edSize.Width, który również zwraca 0. Co mogę użyć, aby znaleźć rzeczywistą szerokość etykiety?
Dziękuję.
Czy to możliwe, że kontrola nie ma ActualWidth, ponieważ nadal jesteś w konstruktorze? System Windows nie został jeszcze wyrenderowany. Co się stanie, jeśli przeniesiesz ten kod do, powiedzmy, załadowanej obsługi zdarzeń? –
Ha! Tak było. Zawsze myślałem, że po InitializeComponent() wszystko powinno już być renderowane ... dzięki! – Carlo