В редакторе
Редактор состоит из нескольких разных подсистем, которые предназначены для хранения модель текста в редакторе, отделен от представления текста и пользовательского интерфейса.
В этих разделах описывают различные аспекты редактора.
В этих разделах описываются функции редактора.
Общие сведения о подсистем
Подсистема текста модели
Подсистема модели текста отвечает за представление текста и разрешить его манипуляция. Подсистема модели текст содержит ITextBuffer интерфейс, который описывает последовательность символов, которая отображается редактором. Этот текст может быть изменено, отслеживания, в противном случае управлять несколькими способами. Модель текста также предоставляет типы для следующих аспектов:
Служба, которая связывает текст с файлами и управляет чтение и запись в файловой системе.
Differencing служба, которая находит минимального различия между 2 последовательностями объектов.
Система построения для описания текста в буфере на основе подмножества текста в других буферах.
Подсистема модели текст может понятий пользовательского интерфейса (ui). Например, она не отвечает за структуры форматирования текста или стандартного текста, и она не имеет набора знаний визуальные оформлений, которые могут быть связаны с текстом.
Открытые типы подсистемы модели текст содержатся в Microsoft.VisualStudio.Text.Data.dll и Microsoft.VisualStudio.CoreUtilitiy.dll, которые зависят только для библиотеки базового класса платформы .NET Framework и управляемой расширяемости .NET Framework (платформа MEF).
Подсистема вид текста
Подсистема представления текста отвечает за форматирование и отображения текста. Типы в эта подсистема делятся на 2 уровня, в зависимости от того, используют ли типы в Windows Presentation Foundation (WPF). Ниже представлены наиболее важные вложенные типы ITextView и IWpfTextView, отслеживающие набор линий, текста, которые должны отображаться, а также курсора, выделение и средства для декорирование текст с использованием элементов пользовательского интерфейса WPF. Эта подсистема также предоставляет поля вокруг области отображения текста. Эти поля могут быть расширены и могут содержать различные типы содержимого и визуальных эффектов. Примеры полей и полосы прокрутки отображаются номера линии.
Открытые типы подсистемы представления текста содержатся в Microsoft.VisualStudio.Text.UI.dl l и Microsoft.VisualStudio.Text.UI.Wp f.dll. Первая сборка содержит независимые от платформы элементы, а второй содержит элементы WPF-специфического.
Подсистема классификации
Подсистема классификации отвечает за определение свойства шрифта для текста. Классификатор разделяет текст на различные классы, например, "ключевое слово" или "примечания". Сопоставление форматов классификации связывает эти классы к фактическим свойствами шрифта, например, "синяя Consolas 10 пт". Эти сведения используются представлением текста при его вставке форматирование и готовится к просмотру СМС. Маркировки, который описан более подробно далее в этом разделе содержит данные, которые необходимо связать с диапазонами текста.
Открытые типы подсистемы классификации содержащихся в Microsoft.VisualStudio.Text.Logic.dll и их взаимодействие с визуальными аспектами классификации, содержащихся в Microsoft.VisualStudio.Text.UI.Wp f.dll.
Подсистема операций
Подсистема операций определяет расширение функциональности редактора. Она предоставляет реализацию для команд редактора Visual Studio и системы отката.
Больше внимания на модели текста и виде текста
Модель текста
Подсистема модели текст состоит из различных группирований типов текста. Они включают текстовый буфер, вставке СМС моментальные снимки и диапазоны текста.
Текстовые буферы и моментальные снимки текста
ITextBuffer интерфейс представляет последовательность знаков юникода, кодируются с помощью UTF-16, кодирование, используемое String введите в платформе .NET Framework. Текстовый буфер может быть сохранено в виде документа файловой системы, однако это не является обязательным.
ITextBufferFactoryService используется для создания пустой текстовый буфер или текстовый буфер, инициализированный из строки или из TextReader. Текстовый буфер могут быть сохранены в файловой системе как ITextDocument.
Текстовый буфер не может быть отредактирован любым потоком до потока получает владение текстового буфера путем вызова TakeThreadOwnership. После этого только этот поток может выполняться правки.
Текстовый буфер может переходить через множество версий во время существования. Новая версия создается каждый раз, когда буфер отредактирован и постоянный ITextSnapshot представляет содержимое этой версии буфера. Поскольку моментальные снимки текст являются неизменяемыми, можно получить доступ к моментальным снимком текста в любом потоке, вкладка " общие ", даже если текстовый буфер он представляет продолжить изменение.
Моментальные снимки текста и линий моментального снимка текста
Можно просмотреть содержимое моментального снимка текст в виде последовательности символов или как последовательность линий. Символы и линии оба индексированный начинаться с нуля. Пустой снимок текста содержит нулевые символы и одну пустую линию. Линия отделена с помощью символа любой допустимый последовательностью символов разрывов строки в юникоде или начала или конца буфера. Символы разрыва строк явно представлены в моментальном снимке текста и разрывы строк в моментальном снимке текста all не должны быть одинаковыми.
Примечание
Дополнительные сведения о символах разрыва строк в редакторе Visual Studio см. в разделе Кодировки и разрывы строк.
Линия текст представлена ITextSnapshotLine объект, который может быть получен из моментального снимка текста для указанного номера линии или для указанного расположения символов.
SnapshotPoints, SnapshotSpans и NormalizedSnapshotSpanCollections
A SnapshotPoint представляет положение символа в моментальном снимке. Гарантируется позиция лежать в диапазоне от нуля до длины из моментального снимка. A SnapshotSpan представляет диапазон текста в моментальном снимке. Гарантируется его положение элемента лежать в диапазоне от нуля до длины из моментального снимка. NormalizedSnapshotSpanCollection состоит из набора SnapshotSpan объекты из одного моментального снимка.
Диапазоны и NormalizedSpanCollections
A Span представляет интервал, который может быть применен к диапазону текста в моментальном снимке текста. Позиции моментальных снимков отсчитываются от нуля, поэтому диапазоны могут запускаться в любой позиции, включая ноль. End свойство диапазонов равно сумме своего Start свойство и сво Length свойство. A Span индексируемый не включает символ End свойство. Например, диапазон со Start=5 и Length=3 имеет End=8 и включают символы в позициях, 5, 6 и 7. Нотация для данного диапазона 5..8).
2 Диапазонов пересекаются, если они имеют любые общие позиции, включая положение элемента. Поэтому пересечение [3, 5) и (2, 7) [3, 5) и пересечение из [3, 5) и (5, 7) [5, 5). (Обратите внимание, что [5, 5) пустой) диапазон.
2 Диапазона перекрывают друг друга, если они содержат общие позиции, кроме позиции элемента. Пустой диапазон никогда не перекрывается никакой другой диапазон и перекрытие 2 диапазонов не является пустым.
A NormalizedSpanCollection список диапазонов в порядке свойств начала диапазона. В списке выберите или упирая объединяются перекрывающихся диапазонов. Например, если существует набор диапазонов [5..9), [0..1), [3..6) и [9..10), нормализованный список диапазонов [0..1), [3..10).
ITextEdit, TextVersion изменений и сообщения уведомления
Содержимое текстового буфера может быть изменено с помощью ITextEdit объект. Создание такой объект (с помощью одного из CreateEdit() методы ITextBufferтекст) запускает транзакцию, которая состоит из правок текста. Каждая правка замена определенного диапазона текста в буфере строки. Координаты и содержимое каждой правки выражены по отношению к моментальному снимку буфера, если транзакция начата. ITextEdit объект обрабатывает координаты правок, на которые повлияло другими правками в той же транзакции.
Например, рассмотрим текстовый буфер, содержащий эту строку:
abcdefghij
Примените транзакция, которая содержит 2 правки, одна правка, которую заменяет диапазон на [2..4) с помощью знака X а вторая правка, которую заменяет диапазон на [6..9) с помощью знака Y. Результат этот буфер.
abXefYj
Координаты второй правки были вычислены по отношению к содержимому буфера в начале транзакции, перед первой правка была применена.
Изменения вступят в силу, когда буфер ITextEdit объект фиксируется путем вызова его Apply() метод. Если была хотя бы одна non-пустая правка, новая ITextVersion создает новую ITextSnapshot создает и одно Changed событие вызывается. Каждая версия текста имеет другой снимок текста. Снимок текста представляет полное состояние текстового буфера после того, как транзакция правки, но версия текста описываются только изменения из одного моментального снимка к другому. В общем случае предполагается, что используется один раз, а затем отменяются моментальные снимки текст, в то время как версии текст, должны оставаться живыми на некоторое время.
Версия текста содержит a INormalizedTextChangeCollection. Эта коллекция содержит изменения, при применении к снимку, формируют последующий моментальный снимок. Каждые ITextChange положение символа в коллекции содержит изменения, замененной строки и строки замены. Замененная строка пуста для базовой вставки и замещающая строка пуста для основного удаления. Нормализованная коллекция всегда null для последней версии текстового буфера.
Только одно ITextEdit объект может быть создан для текстового буфера в любое время и все правки текста должна запускаться в потоке, который имеет текстовый буфер (если было востребовано владение). Правка текста может быть прерывается, вызвав своим Cancel метод или сво Dispose метод.
ITextBuffer также предоставляет Insert()" **Delete()**и Replace() напоминают те методы, которые основаны на ITextEdit интерфейс. Вызов этих имеет тот же эффект, как создать ITextEdit объект, звоня похожий, а затем при применении правка.
Точки отслеживания и диапазоны отслеживания
ITrackingPoint представляет положение символа в текстовом буфере. Если буфер отредактирован способом, который приводит к позиции символа сдвигать точка отслеживания сдвигает с ним. Например, если точка отслеживания ссылается для размещения 10 в буфере, а 5 символов вставьте в начале буфера точки отслеживания, а затем ссылается для размещения 15. Если вставка происходит точно позиции в указанной точкой отслеживания, его функциональности определяется своим PointTrackingMode, которое может быть одним Positive OR Negative. Если режим отслеживания является положительным, то точка отслеживания ссылается на один и тот же знак, что теперь в конце инструкции insert; если режим отслеживания отрицательное, то точка отслеживания относится к первому введенному символу на исходную позицию. Если символ в позиции, представленную точкой отслеживания удаляется, то точка отслеживания сдвигает до первого символа после удаления диапазона. Например, если точка отслеживания относится к знаку в позиции 5, а символы в позициях, 3 до 6, удалите точку отслеживания относится к знаку в позиции 3.
ITrackingSpan представляет диапазон символов, а не просто одной позиции. Его функциональности определяется своим SpanTrackingMode. Если режим отслеживания диапазона EdgeInclusive, увеличении объема включает диапазон отслеживания текст, вставленное в его границы. если режим отслеживания диапазона EdgeExclusiveдиапазон отслеживания не включает текст, вставленное в его границы. Однако если режим отслеживания диапазона EdgePositiveинструкция insert помещает текущая позиция перемещается к начальной точке, и если режим отслеживания диапазона EdgeNegativeинструкция insert помещает текущую позицию в конец.
Можно получить позицию точки отслеживания или диапазона диапазона отслеживания для любого моментального снимка текстового буфера, к которому они принадлежат. Точки отслеживания и диапазоны отслеживания могут безопасно ссылаться из любого потока.
Типы контента
Типы содержимого механизм для определения различных типов содержимого. Тип содержимого может быть типом файла в виде "текст", "код" и "binary" или технологии, как "xml", "vb" или "c#". Например, машинное слово "using" ключевое слово в c# и Visual Basic, но не в других языках программирования. Таким образом, определение этого ключевого слова было бы ограничена типами содержимого "c#" и "vb".
Типы содержимого, используемые в качестве фильтра для оформлений и других элементов редактора. Многие функции и точек расширения редактора определены в тип содержимого; например, расцветка текста отличается для файлов в виде обычного текста, файлов исходного кода XML-файл и Visual Basic. Текстовые выходные обычно присвоен тип содержимого, когда они создаются и тип содержимого текстового буфера может быть изменен.
Типы содержимого могут множественн-унаследовать от других типов содержимого. ContentTypeDefinition позволяет указать несколько базовых типов как родительские элементы для заданного типа содержимого.
Разработчики могут определить собственные типы содержимого и зарегистрировать их с помощью IContentTypeRegistryService. Многие функции редактора можно определить по отношению к определенному типу содержимого с помощью ContentTypeAttribute. Например, поле редактора, элементы оформления и обработчики мыши, можно задать таким образом, чтобы они будут применены только к редакторам, указывающие, определенные типы содержимого.
Внешний вид текста
Часть представления шаблона контроллера представления модели (MVC) определяет представление текста, форматирование представления, графические элементы, такие как полоса прокрутки и курсора. Все элементы представления редактора Visual Studio основаны на WPF.
Представления текста
ITextView интерфейс независимое от платформы представление представления текста. Он используется в основном для отображения текстовых документов в окне, но ее можно также использовать для других целей, например, во всплывающей подсказке.
Текстовое представление ссылается на различные типы текстовых буферов. TextViewModel свойство ссылается на ITextViewModel объект, указывающий на эти 3 другим текстовым буферы. буфер данных, верхний буфер уровня данных, буфер правки, в котором изменение происходит, и визуальные буфер, который буфер, который отображается в представлении текста.
Форматированием текста на основе классификаторах, вложенные в основной текстовый буфер, а украшено с помощью поставщиков элемента оформления, вложенные в представление самого текста.
Система координат вид текста
Система координат представления текста определяющий позиции в представлении текста. в этой системе координат, x значение 0,0 соответствует левого края, текст и показыванным y значение 0,0 соответствует верхнему краю, показыванным текста. x координата увеличивает слева направо. y координата увеличивает сверху вниз.
Окно просмотра (часть текста, видимого в поле текст) не может прокручиваться по горизонтали таким же образом, что ему - по вертикали. Окно просмотра по горизонтали прокрученно изменив его влево координата таким образом, чтобы он перемещается относительно поверхности рисования. Однако окно просмотра может быть прокрученно только принятое по вертикали путем изменения текста, в результате чего a LayoutChanged событие, создаваемое.
Диапазона в системе координат в логические точками. Если поверхность отрисовки текста отображается без масштабирования, то преобразование, то одна единица измерения в системе координат отрисовки текста соответствует одному точку на экране.
Поля
ITextViewMargin интерфейс представляет поля и включает элемент управления видимости полей и его размера. 4 Стандартных полей, которые называются "верхним", "слева", "справа" и "снизу" и вложенные в верхней части, найдено, left или правый край представления. Эти поля представляют собой контейнеры в которых другие поля можно поместить. Интерфейс определяет методы, которые возвращают размер поля и видимость поля. Поля визуальные элементы, содержащие дополнительные сведения о просмотре текста, к которому они вложенные. Например, цифры выделительнаяа строка полей линия-номера для представления текста. Поля глифов, отображают элементы пользовательского интерфейса.
IWpfTextViewMarginProvider интерфейс обрабатывает создание и размещение полей. Поля можно упорядочить по отношению к другим полям. Поля с более высоким приоритетом расположенных ближе к представлению текста. Например, если 2 слева поля, поля a и B полей и полей B имеют более низкий приоритет, чем поля а, б полей появляются слева от A. полей.
Основное приложение вид текста
IWpfTextViewHost интерфейс содержит представление текста и все упирая оформления, сопровождают представление, например полосы прокрутки. Узел представления текста также содержит поля, вложенные в границах представления.
Форматированный текст
Текст, отображаемый в представлении текста состоит из ITextViewLine объекты. Каждая линия текст-вида соответствует одной линии с текстом в представлении текста. Длинные очереди в соответствующем текстовом буфере можно скрыть или частично создания машинного слова программу-оболочку (если не включен) или сломано на несколько линий текст-вида. ITextViewLine интерфейс содержит методы и свойства для сопоставления между координатами и символами, и оформлений, которые могут быть связаны с линией.
ITextViewLine объекты создаются с помощью IFormattedLineSource интерфейс. Если просто управлять текста, которая в данный момент отображается в представлении можно игнорировать источник форматирования. Если нужно знать в формате текста, которая не отображается в представлении (например, поддерживать множество люди-текст вырезать и вставить), можно воспользоваться IFormattedLineSource форматировать текст в текстовом буфере.
Форматирует одно представление текста ITextSnapshotLine одновременно.
Функции редактора
Функции редактора разработаны таким образом, что определение функции будет отделен от его реализации. Редактор включает следующие функции:
Теги и классификаторы
Элементы оформления
Проекция
Структуризация
Привязки мыши и ключа
Операции и примитивы
IntelliSense
Теги и классификаторы
Теги метки, которые связаны с текстовым диапазоном. Они могут быть различными способами, например с помощью расцветки текст подчеркнутым, изображения или поп-поднимают. Классификаторы один тип тега.
Другие типы тегов TextMarkerTag для выделения текста OutliningRegionTag для структуризации и ErrorTag чтобы компилировать ошибки.
Типы классификации
IClassificationType интерфейс представляет equivalence класс, который абстрактная категория текста. Типы классификации могут множественн-унаследовать от других типов классификации. Например, классификация языка программирования могут включать "ключевое слово", "примечания" и "идентификатор", все унаследованные от "кода". Типы классификаций естественных языков могут включать "имя существительное", "команды" и "прилагательное", все унаследованные от "естественных языков".
Классификация
Классификация экземпляр заданного типа классификации, обычно над текстовым диапазоном. A ClassificationSpan используется для представления классификацию. Диапазон классификации можно рассматривать как метки, которая содержит указанный диапазон текста и сообщает системе, что этот диапазон текста определенного типа классификации.
Классификаторы
IClassifier механизм, время ожидания вставке в набор СМС классификаций. Классификаторы должны быть определены для определенных типов содержимого и создавать для отдельных текстовых буферов. Клиенты должны реализовать IClassifier участвовать в классификации текста.
Накопителья классификатора
Агрегатор классификатора механизм, который объединяет все классификаторы для одного текстового буфера в только один набор классификаций. Например, а классификатор c# и классификатора можно создать классификации для английского языка с комментарием в файле c#. Рассмотрим этот комментарий:
// This method produces a classifier
Классификатор c# может назначить весь диапазон, как комментарий и классификатор английского может классифицировать "создает" как "команда" и "метод" как "имя существительное". Агрегатор создает набор non-перекроя классификаций и тип набора основан на всех вкладах.
Агрегатор классификатора также классификатор, поскольку он прерывается текста в набору классификаций. Агрегатор классификатора также гарантирует, что нет пересекающихся классификации и классификации отсортированы. Отдельные классификаторы могут возвращать любой набору классификаций, в любом порядке и перекрывающиеся в любом случае.
Расцветка форматирования и текста классификации
Форматирование текста пример функции, которая основана на классификации текста. Оно используется уровнем представления текста, чтобы задать отображение текста в приложении. Область форматирования текста зависит от WPF, но логически определение классификаций нет.
Формат классификации набор свойств форматирования для конкретного типа классификации. Эти форматы наследуются от родительского типа формата классификации.
IClassificationFormatMap сопоставление типа классификации к набору свойств форматирования текста. Реализация сопоставления формата в редакторе обрабатывает все экспорты форматов классификации.
Элементы оформления
Элементы оформления графические эффекты, которые непосредственно не связаны с шрифт и цвет символов в представлении текста. Например, красный подчеркивание волнистой линии, используемый для маркирования non-компилировать код в большинстве языков программирования внедренный оформление и всплывающие подсказки элементы оформления. Элементы оформления производными от UIElement и реализация ITag. 2 Специализированных типа тега элемента оформления SpaceNegotiatingAdornmentTagдля оформлений, которые занимают одну и ту же места в виде текста в представлении. ErrorTagдля волнистой линии подчеркнутым.
Внедренные элементы оформления графики, которые формируют часть представления форматированного текста. Они имеют вид различных уровнях z-порядка. 3 Встроенных уровня следующим образом: отправьте СМС, курсор и выделение. Однако разработчики могут задать несколько уровней и поместить их в порядке относительно друг друга. 3 Типа внедренных оформлений текст-относительные, переместите элементы оформления (если текст перемещение и удаление, когда текст удалено), вид-относительные оформления (которые должны делать с частями представления), и владелец-контролируемые нетекстовые элементы оформления (разработчик должен управлять их расположение).
Всплывающие крайние элементы графика, которые появляются в небольшое окно над представлением текста, например подсказками.
Проекция
Проекция метод для построения другой тип текстового буфера, который не содержит текст, но вместо объединяет текст из других текстовых буферов. Например, буфер проекции может использоваться для сцепления текст из 2 других буферов и представить результат, если он находится в одном буфере просто или скрывать части текста в одном буфере. Буфер проекции может действовать как буфер источника к другому буфер проекции. Набор буферов, связанных проекцией может быть построен для изменения порядка текст различными способами. (Такой как а также набор граф буферов.) Текст Visual Studio функцию структурирования реализуется с помощью буфера проекции, чтобы скрыть свернут текст и редактор Visual Studio для страниц ASP.NET использует проекцию для поддержки внедренные языки, как Visual Basic и c#.
IProjectionBuffer создает с помощью IProjectionBufferFactoryService. Буфер проекции представлен упорядоченной последовательностью ITrackingSpan объекты, например диапазоны источника. Содержимое этих диапазонов как последовательность символов. Текстовые диапазоны буферы из которых источника вычерченны называются буферы источника. Клиенты буфера проекции не иметь в виду, что он отличается от обычного текстового буфера.
Буфер проекции прослушивает события текст-изменения в буферах источника. Если текст в диапазоне источника изменяет буфер проекции сопоставляет изменение координаты текста к собственным координатам и создает соответствующие события текст-изменения. Например, рассмотрим буферы a и B имеют источника, эти содержимое:
A: ABCDE
B: vwxyz
Если буфер p проекции сформирован из 2 диапазонов текст, один, содержащий все буфера a и B друга, который содержит все буфера, а " p " имеет следующее содержимое:
P: ABCDEvwxyz
Если подстрока xy удаляет из буфера B, то буфер p вызывает событие, указывающее, что будут удалены символы в позициях, 7 и 8.
Буфер проекции можно также редактировать непосредственно. Он распространяется правки в соответствующие буферы источника. Например, если строка вставляется в буфер p в позицию 6 (исходное положение символа "v"), то вставка распространяется на B буфера в позиции 1.
Ограничения в диапазонах источника, которые участвуют в буфер проекции. Диапазоны источника не могут перекрываться. расположение в буфере проекции не может сопоставить более одного расположения в любом буфере источника и расположение в буфере источника не может сопоставить более чем одно расположение в буфере проекции. Нет циркулярности не разрешены в отношении буфера источника.
События возникают, когда набор буферов источника для буфера проекции и при изменении источника изменяет набор диапазонов.
Буфер элизии специальный тип буфера проекции. Он используется, в основном, для структуризации и для операций, развернут и свернут блоки текста. Буфер элизии основан на просто одном буфере источника и диапазоны в буфере элизии должны быть упорядочены таким же, ним порядке в буфере источника.
Граф буферов
IBufferGraph интерфейс содержит сопоставление между граф буферов проекции. Все текстовые буферы и буферов проекции собираются в непосредственно ациклической диаграмме, аналогично дерево абстрактного синтаксиса, формируемый компилятором языка. Диаграмма определяется верхним буфером, который может быть любым текстовым буфером. Граф буферов может сопоставить от точки к точке в верхнем буфере в буфере источника или из диапазона в верхнем буфере в набор диапазонов в буфере источника. Аналогично, он может сопоставить точку или диапазон из буфера источника до точки в верхнем буфере. Буфера создаются с помощью диаграммы IBufferGraphFactoryService.
События и буферов проекции
Если буфер проекции изменен, изменения отправляются из буфера проекции в буферы, зависящие от нее. После того как все буферы изменены, события возникают изменения буфера, начиная с наиболее глубоким буфером.
Структуризация
Структурирование возможность развернуть или свернуть различных блоков текста в представлении текста. Структура определяется как тип ITag, точно так же, как и элементы оформления. A OutliningRegionTag тег, который определяет область текста, которую можно развернуть или свернуть. Для использования структурирование необходимо импортировать IOutliningManagerService доступ IOutliningManager. Структурирование диспетчер создает, свернуть и развернуть различных блоков, которые представлены как ICollapsible объекты и вызывают события, соответственно.
Привязки мыши
Привязки мыши ссылаются на различные команды перемещения мыши. Привязки указываются с помощью мыши IMouseProcessorProviderи ключевые привязки указываются с помощью IKeyProcessorProvider. IWpfTextViewHost автоматически создает все привязки и их подключении к событиям мыши в представлении.
IMouseProcessor интерфейс содержит обработчики событий выполняет предварительную обработку и POST-процесса для различных событий мыши. Для обработки одного из событий можно переопределять некоторые методы in MouseProcessorBase.
Операции редактора
Операции редактор можно использовать для автоматизации взаимодействие с редактором для создания сценария или других целей. Можно импортировать IEditorOperationsFactoryService получить доступ к операции над заданным ITextView. Затем можно использовать эти объекты, чтобы изменить выделение, прокрутить представление или переместить знак вставки на различные части представления.
IntelliSense
Завершение выписки поддержка технологии IntelliSense справки сигнатуры (называемая также сведения о параметрах), быстрый сведения и смарт-тегов.
Завершение выписки предоставляет всплывающие списки потенциальных завершений для имен метода, элемент xml и других элементов кода или разметки. Как правило, действие пользователя вызывает сеанс завершения. Сеанс отображает список потенциальных завершений, и пользователь может выбрать одно или закрыть список. ICompletionBroker отвечают за создание и активировать ICompletionSession. ICompletionSource вычисляет CompletionSet элементов завершения сеанса.