İngilizce dilinde oku

Aracılığıyla paylaş


İzlenecek yol: Metin görünümünü özelleştirme

Düzenleyici biçimi haritasında aşağıdaki özelliklerden herhangi birini değiştirerek metin görünümünü özelleştirebilirsiniz:

  • Gösterge kenar boşluğu

  • Ekleme işareti

  • Şapka işaretinin üzerine yazma

  • Seçili metin

  • Etkin olmayan seçili metin (başka bir ifadeyle, odağı kaybolan seçili metin)

  • Görünür boşluk

MEF projesi oluşturma

  1. C# VSIX projesi oluşturun. (Yeni Proje iletişim kutusu, Visual C# / Genişletilebilirlik'i ve ardından VSIX Projesi'ni seçin.) Çözümü ViewPropertyTestolarak adlandırın.

  2. Projeye bir Düzenleyici Sınıflandırıcısı öğesi şablonu ekleyin. Daha fazla bilgi için bkz . Düzenleyici öğesi şablonuyla uzantı oluşturma.

  3. Varolan sınıf dosyalarını silin.

İçerik türünü tanımlama

  1. Bir sınıf dosyası ekleyin ve adını verin ViewPropertyModifier.

  2. Aşağıdaki using yönergeleri ekleyin:

    C#
    using System;
    using System.Collections;
    using System.Windows;
    using System.Windows.Media;
    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Text.Editor;
    using Microsoft.VisualStudio.Utilities;
    
  3. öğesinden IWpfTextViewCreationListenerdevralan adlı TestViewCreationListener bir sınıf bildirin. Bu sınıfı aşağıdaki özniteliklerle dışarı aktarın:

    • ContentTypeAttribute bu dinleyicinin uygulanacağı içerik türünü belirtmek için.

    • TextViewRoleAttribute bu dinleyicinin rolünü belirtmek için.

      C#
      [Export(typeof(IWpfTextViewCreationListener))]
      [ContentType("text")]
      [TextViewRole(PredefinedTextViewRoles.Document)]
      internal class TestViewCreationListener : IWpfTextViewCreationListener
      

  4. Bu sınıfta, öğesini içeri aktarın IEditorFormatMapService.

    C#
    [Import]
    internal IEditorFormatMapService FormatMapService = null;
    

Görünüm özelliklerini değiştirme

  1. Görünüm açıldığında görünüm özelliklerinin değiştirilmesi için yöntemini ayarlayın TextViewCreated . Değişikliği yapmak için, önce bulmak istediğiniz görünümün yönüne karşılık gelen öğesini bulun ResourceDictionary . Ardından kaynak sözlüğünde uygun özelliği değiştirin ve özellikleri ayarlayın. Özellikleri ayarlamadan önce yöntemini çağırarak BeginBatchUpdate ve ardından özellikleri ayarladıktan sonra EndBatchUpdate yöntemini çağırarak yöntemini toplu SetProperties işleyin.

    C#
    public void TextViewCreated(IWpfTextView textView)
    {
        IEditorFormatMap formatMap = FormatMapService.GetEditorFormatMap(textView);
    
        ResourceDictionary regularCaretProperties = formatMap.GetProperties("Caret");
        ResourceDictionary overwriteCaretProperties = formatMap.GetProperties("Overwrite Caret");
        ResourceDictionary indicatorMargin = formatMap.GetProperties("Indicator Margin");
        ResourceDictionary visibleWhitespace = formatMap.GetProperties("Visible Whitespace");
        ResourceDictionary selectedText = formatMap.GetProperties("Selected Text");
        ResourceDictionary inactiveSelectedText = formatMap.GetProperties("Inactive Selected Text");
    
        formatMap.BeginBatchUpdate();
    
        regularCaretProperties[EditorFormatDefinition.ForegroundBrushId] = Brushes.Magenta;
        formatMap.SetProperties("Caret", regularCaretProperties);
    
        overwriteCaretProperties[EditorFormatDefinition.ForegroundBrushId] = Brushes.Turquoise;
        formatMap.SetProperties("Overwrite Caret", overwriteCaretProperties);
    
        indicatorMargin[EditorFormatDefinition.BackgroundColorId] = Colors.LightGreen;
        formatMap.SetProperties("Indicator Margin", indicatorMargin);
    
        visibleWhitespace[EditorFormatDefinition.ForegroundColorId] = Colors.Red;
        formatMap.SetProperties("Visible Whitespace", visibleWhitespace);
    
        selectedText[EditorFormatDefinition.BackgroundBrushId] = Brushes.LightPink;
        formatMap.SetProperties("Selected Text", selectedText);
    
        inactiveSelectedText[EditorFormatDefinition.BackgroundBrushId] = Brushes.DeepPink;
        formatMap.SetProperties("Inactive Selected Text", inactiveSelectedText);
    
        formatMap.EndBatchUpdate();
    }
    

Kodu derleme ve test etme

  1. Çözümü oluşturun.

    Bu projeyi hata ayıklayıcıda çalıştırdığınızda, Visual Studio'nun ikinci bir örneği başlatılır.

  2. Bir metin dosyası oluşturun ve metin yazın.

    • Ekleme şapka işareti eflatun olmalı ve üzerine yazma şapkası turkuaz olmalıdır.

    • Gösterge kenar boşluğu (metin görünümünün solunda) açık yeşil olmalıdır.

  3. Yazdığınız metni seçin. Seçili metnin rengi açık pembe olmalıdır.

  4. Metin seçiliyken, metin penceresinin dışında herhangi bir yere tıklayın. Seçili metnin rengi koyu pembe olmalıdır.

  5. Görünür boşluğu açın. (Düzenle menüsü, Gelişmiş'in üzerine gelin ve Boşluğu Görüntüle'ye tıklayın. Metne bazı sekmeler yazın. Sekmeleri temsil eden kırmızı oklar görüntülenmelidir.