Delen via


Visual Studio-editor uitbreiden met een nieuwe marge

Marges voor tekstweergave worden in een margecontainer geplaatst (zie ContainerMarginPlacement.KnownValues) en geordend vóór of na relatief andere marges (zie MarginPlacement.KnownValues).

Providers van tekstweergavemarges implementeren ITextViewMarginProvider interface, configureer de marge die ze bieden door TextViewMarginProviderConfiguration- te implementeren en wanneer deze is geactiveerd, ui-besturingselement te bieden dat in de marge moet worden gehost via CreateVisualElementAsync-.

Omdat extensies in VisualStudio.Extensibility mogelijk niet worden verwerkt vanuit Visual Studio, kunnen we WPF niet rechtstreeks gebruiken als presentatielaag voor inhoud van marges voor tekstweergaven. In plaats daarvan moet u een RemoteUserControl- en de bijbehorende gegevenssjabloon voor dat besturingselement maken om een inhoud aan een tekstweergavemarge op te geven. Hoewel er hieronder enkele eenvoudige voorbeelden zijn, raden we u aan de documentatie over de Remote UI te lezen bij het maken van marge-inhoud voor tekstweergave.

/// <summary>
/// Configures the margin to be placed to the left of built-in Visual Studio line number margin.
/// </summary>
public TextViewMarginProviderConfiguration TextViewMarginProviderConfiguration => new(marginContainer: ContainerMarginPlacement.KnownValues.BottomRightCorner)
{
    Before = new[] { MarginPlacement.KnownValues.RowMargin },
};

/// <summary>
/// Creates a remotable visual element representing the content of the margin.
/// </summary>
public async Task<IRemoteUserControl> CreateVisualElementAsync(ITextViewSnapshot textView, CancellationToken cancellationToken)
{
    var documentSnapshot = await textView.GetTextDocumentAsync(cancellationToken);
    var dataModel = new WordCountData();
    dataModel.WordCount = CountWords(documentSnapshot);
    this.dataModels[textView.Uri] = dataModel;
    return new MyMarginContent(dataModel);
}

Naast het configureren van margeplaatsing kunnen providers van tekstweergavemarges ook de grootte van de rastercel configureren waarin de marge moet worden geplaatst met behulp van GridCellLength-- en GridUnitType-eigenschappen.

Marges voor tekstweergave visualiseren doorgaans bepaalde gegevens met betrekking tot de tekstweergave (bijvoorbeeld het huidige regelnummer of het aantal fouten). De meeste providers van tekstweergavemarges willen dus ook luisteren naar tekstweergavegebeurtenissen om te reageren op het openen, sluiten van tekstweergaven en typen door gebruikers.

Visual Studio creëert slechts één instantie van uw margeprovider voor tekstweergaven, ongeacht hoeveel toepasselijke tekstweergaven een gebruiker opent. Dus als uw marge statusgevoelige gegevens weergeeft, moet uw provider de status bijhouden van momenteel geopende tekstweergaven.

Zie voor meer informatie voorbeeld van het aantal marges van Word.

Verticale marges voor tekstweergave waarvan de inhoud moet worden uitgelijnd met de tekstregels, worden nog niet ondersteund.