J'ai ce morceau de code XAML:WPF contrôle taille réelle
<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>
Dans le code derrière, je suis en train d'obtenir la largeur réelle de l'étiquette, je pensais que
theLabel.ActualWidth
ferait la truc, mais après avoir essayé ce code:
public Window1()
{
InitializeComponent();
double width = theLabel.ActualWidth;
}
La valeur de la largeur est 0, j'ai vérifié aussi avec theLabel.Width, qui renvoie NaN, theLabel.Desir edSize.Width, qui retourne également 0. Que puis-je utiliser pour trouver la largeur réelle de l'étiquette?
Merci.
Se pourrait-il que le contrôle n'a pas de largeur réelle parce que vous êtes toujours dans le constructeur? Windows n'a pas encore été rendu. Que faire si vous déplacez ce code vers, disons, le gestionnaire d'événements Loaded? –
Ha! C'est ce qu'il a fait. J'ai toujours pensé qu'après InitializeComponent() tout aurait déjà dû être rendu ... merci! – Carlo