2011-12-30 2 views
5

Я пишу расширение Visual Studio, где я создаю линейные украшения, которые необходимо изменить, когда пользователь изменяет размер кода. То есть когда пользователь изменяет размер окна Visual Studio, я изменяю ширину и высоту украшения. Я обрабатываю событие IWpfTextView.LayoutChanged, и я меняю размеры своих украшений. Чтобы избежать перекрытия украшений строками ниже, я также реализовал ILineTransformSource.GetLineTransform, чтобы увеличить высоту линии, чтобы приспособить размер украшения.Как вы вызываете вызов ILineTransformSource.GetLineTransform в расширении VS для изменения размеров размеров строк?

Однако, когда я изменить размеры украшений (при обращении с IWpfTextView.LayoutChanged события) Я не получать вызовы к моей функции ILineTransformSource.GetLineTransform, чтобы изменить размер строки преобразования. Это оставляет украшение, перекрывающее линии под ним. Кажется, я не могу найти способ позвонить по телефону ILineTransformSource.GetLineTransform. (Хотя, если пользователь прокручивает представление, я получаю эти вызовы. Но я не хочу, чтобы заставить пользователя прокручивать окно, чтобы исправить визуальный сбой.)

Кто-нибудь знает о способе заставить Visual Studio вызвать мой ILineTransformSource.GetLineTransform, чтобы я мог изменять размеры линий, когда мои украшения меняют высоту?

+0

Вы поняли это? Мне нужно освободить место и для моего украшения. – jwize

ответ

2

Попробуйте вызвать метод IWpfTextView.DisplayTextLineContainingBufferPosition - это также вызовет вызовы GetLineTransform.

+0

Можете ли вы дать мне представление о том, как я бы поставил класс на место, чтобы захватить эти события при вызове? Я новичок в MEF, поэтому у меня мало понимания того, что нужно делать здесь? – jwize