Posso sospendere il disegno per eseguire più aggiornamenti successivi in ??Flex?

StackOverflow https://stackoverflow.com/questions/258182

  •  06-07-2019
  •  | 
  •  

Domanda

Ho scritto un semplice controllo del calendario per consentire la selezione di singoli giorni, settimane, mesi e così via. La semplicità deriva dal fatto che non faccio alcun disegno da solo, optando invece per creare un mucchio di scatole ed etichette per fungere da celle della data per il calendario.

Quando è selezionata una data o un intervallo di date, devo evidenziare quell'intervallo. È facilmente eseguibile ripetendo le celle e cambiando il loro stile. [modifica:] Tuttavia, ciò sembra causare un ritardo durante il quale le celle vengono prima disegnate come se il nome dello stile fosse vuoto, quindi ridisegnato con lo stile corretto, nonostante il fatto che non abbia mai imposta esplicitamente lo stile su null - I alternato tra " CalendarCell " e " CalendarCellSelected " ;.

Se si trattasse di Windows Form, chiamerei SuspendLayout sul contenitore padre per assicurarmi che i controlli vengano riverniciati solo dopo aver completato gli aggiornamenti. Quello che sto cercando di sapere è se esiste una soluzione simile per Flex. Vorrei evitare di disegnare l'intero calendario " manualmente " ;, per così dire, se possibile,

modifica: ha cambiato la descrizione del problema in modo da riflettere più accuratamente ciò che vedo.

È stato utile?

Soluzione

Il controllo del tuo calendario è un componente UIC? Sta usando i metodi standard di invalidazione come commitProperties (), updateDisplayList (), ecc?

Quello che potresti voler fare è mantenere un array privato di celle che cambierà i loro stili, ma poi cambierà lo stile effettivo nella tua commitProperties (). Non sono sicuro che setStyle () emetta validateNow () perché lo sfarfallio è un po 'sorprendente.

Altri suggerimenti

Stai usando callLater ()?

Se si utilizza callLater (), è possibile che imposti la visualizzazione mentre raggruppa le modifiche fino a quando non è necessario disegnare una cornice o forzare un disegno della cornice con validateNow () o simile. Potrebbe essere abbastanza nel tuo caso.

Potrebbe non essere esattamente quello che stai cercando, ma David Coletta di Adobe ha pubblicato a video che spiega un EventCoalescer che utilizzano in Buzzword per rinviare eventi che aggiornano aree specifiche dell'interfaccia utente dell'app fino a quando l'utente non ha smesso di spostare il punto di inserimento nel testo, ad esempio.

Questo post sul blog di Hans Van de Velde ha anche una soluzione simile, e codice reale anche per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top