Ecco lo scenario in base al quale sono riuscito a implementare un allenamento per questo problema:
Ho un certo numero di caselle di testo che sono collegati a un documento di Excel. Le caselle di testo assumono un valore numerico. Sono impostati per invalidare gli errori di dati nel codice xaml. Si verifica un errore di dati se il numero è < 1 o null. Ho posizionato un AdornerDecorator attorno alla casella di testo (in modo che il bordo di invalidazione rosso appaia correttamente sulla casella di testo). In Excel, è possibile modificare tutte le caselle di testo contemporaneamente - ma, come rilevato dall'OP, se si riesce a invalidare oltre 144 caselle di testo contemporaneamente, il decoratore decoratore inizia a giocare, compensando la posizione dei bordi (lo stesso cosa è stata progettata per risolvere in primo luogo).
Ho provato un numero di soluzioni diverse tra cui invalidare il layout, tuttavia nessuno di questi ha funzionato per la situazione che stavo affrontando. Usando Snoop, ho scoperto che se aggiornassi manualmente la casella di testo, l'adornatore si posizionava correttamente. Così, ho deciso di chiamare un aggiornamento del layout da ogni singola casella di testo che necessitava dell'ornatore. Ho fatto questo ascoltando OnValueUpdated sulle caselle di testo. Se il nuovo valore che si stava aggiornando era un valore non valido, imposto un "UpdateLayout()" per la casella di testo (volevo farlo solo per valori non validi, perché forzare un aggiornamento ha un impatto sulle prestazioni e non voglio fallo ogni volta che cambia il valore).
In questo modo, indipendentemente dal numero di celle che volevo cambiare in una volta, il decoratore decoratore veniva sempre visualizzato nella posizione corretta (eccetto per l'ultima casella di testo da valutare che, nonostante i miei migliori sforzi, è sempre mai così lievemente disallineato).
fonte
2016-11-15 08:58:01
Se le posizioni del postino sono animate, la domanda potrebbe essere correlata a [questa domanda] (http://stackoverflow.com/questions/9049610/is-141-the-maximum-number-of-wpf-panel-items -che-può-essere-animato-contemporaneamente/9062419 # 9062419). Ho notato 144 come il numero massimo di trasformazioni animate (in determinate condizioni) lì. – Clemens
C'è anche [questa domanda] (http://stackoverflow.com/questions/7610608/onrender-method-does-not-work-with-more-than-144-controls) che viene eseguito anche nel numero magico 144.I miei non sono animati direttamente, ma sono collegati ai controlli che scorrono avanti e indietro. –