2011-12-30 3 views
5

Sto scrivendo un'estensione di Visual Studio in cui creo degli ornamenti di linea che devono essere ridimensionati quando l'utente ridimensiona la visualizzazione del codice. Cioè quando l'utente ridimensiona la larghezza della finestra di Visual Studio, modifico sia la larghezza che l'altezza dell'ornamento. Sto gestendo l'evento IWpfTextView.LayoutChanged e sto ridimensionando i miei ornamenti lì. Per evitare di sovrapporre gli ornamenti alle linee sottostanti, ho anche implementato ILineTransformSource.GetLineTransform per ingrandire l'altezza della linea per adattarla alle dimensioni dell'ornamento.Come si impone una chiamata a ILineTransformSource.GetLineTransform in un'estensione VS per una modifica alle dimensioni di un ornamento di linea?

Tuttavia, quando cambio le dimensioni degli ornamenti (quando la gestione dell'evento IWpfTextView.LayoutChanged) Sono non ricevendo le chiamate alla mia funzione ILineTransformSource.GetLineTransform per ridimensionare la linea di trasformare. Questo lascia l'ornamento che si sovrappone alle linee sottostanti. Non riesco a trovare alcun modo di forzare una chiamata a ILineTransformSource.GetLineTransform. (Sebbene, se l'utente scorre la vista, ottengo queste chiamate, ma non voglio forzare l'utente a scorrere la finestra per correggere un problema visivo.)

Qualcuno sa di un modo forzare Visual Studio a chiamare il mio ILineTransformSource.GetLineTransform in modo che possa ridimensionare la linea trasformata quando i miei ornamenti cambiano in altezza?

+0

Hai capito? Devo fare spazio anche per il mio ornamento. – jwize

risposta

2

Provare a chiamare il metodo IWpfTextView.DisplayTextLineContainingBufferPosition: questo imporrà anche le chiamate GetLineTransform.

+0

Puoi darmi un'idea di come metterei una classe in atto per catturare questi eventi quando chiamati? Sono nuovo nel MEF quindi ho poca comprensione di ciò che deve essere fatto qui? – jwize