İ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
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ü
ViewPropertyTest
olarak adlandırın.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.
Varolan sınıf dosyalarını silin.
İçerik türünü tanımlama
Bir sınıf dosyası ekleyin ve adını verin
ViewPropertyModifier
.Aşağıdaki
using
yönergeleri ekleyin:öğ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.
Bu sınıfta, öğesini içeri aktarın IEditorFormatMapService.
Görünüm özelliklerini değiştirme
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.
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
Çö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.
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.
Yazdığınız metni seçin. Seçili metnin rengi açık pembe olmalıdır.
Metin seçiliyken, metin penceresinin dışında herhangi bir yere tıklayın. Seçili metnin rengi koyu pembe olmalıdır.
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.