In Silverlight il processo che misura e dispone gli elementi viene eseguito in asincrono, questo comporta che proprietà come FrameworkElement.ActualWidth o FrameworkElement.ActualHeight siano in alcuni momenti non ancora valorizzate.
Per evitare di ottenere misurazioni incongruenti è necessario eseguire in asincrono tutte le operazioni che coinvolgono le precedenti proprietà.
private void Measure() { Dispatcher.BeginInvoke(delegate { var actualWidth = myTextBlock.ActualWidth; var actualHeight = myTextBlock.ActualHeight; }); }
Così facendo l'accesso alle proprietà verrà eseguito solo quando l'operazione di misurazione sono ormai terminate, e le due proprietà saranno valorizzate correttamente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.