56 messaggi dal 07 marzo 2006
Ciao, ho un problema con il sistema di layout di WPF.
Dovendo implementare una mia logica custom per la disposizione di oggetti in un canvas, ho creato una mia classe che deriva da System.Windows.Controls.Canvas, facendo l'override di MeasureOverride ed ArrangeOverride.
Ho però, un problema di prestazioni, che deriva dal fatto che, se non ho visto male disassemblando le dll del fx (4.0), ogni volta che aggiungo un figlio ad un controllo che deriva da System.Windows.Controls.Panel, viene richiamato InvalidateMeasure (ho visto giusto?).
Mi chiedevo, quindi, se non sia possibile sospendere il processo di layout (e ripristinarlo in un secondo momento), oppure inserire più figli in una volta sola (non mi pare che UIElementCollection abbia un metodo come AddRange), in modo da scatenare il processo di layout una volta sola, al termine della mia inizializzazione.
Grazie mille,
ciao

Software Department
Aprilia Racing S.r.l.
http://www.racingaprilia.com/

==========================================

L'ipocondria è l'unica malattia che non ho.
(Anonimo)
L'invalidate non determina subito un relayout (per questo c'è il metodo UpdateLayout) perciò se fai più chiamate consecutive, sebbene invalidi n volte, solo un layout verrà effettuato.
Questo perché il dispatcher prenderà in carico la richiesta di invalidazione una volta terminato il tuo codice e solo se non c'è altro in coda con più priorità.
Probabilmente il problema prestazionale che cerchi non è lì

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.