Návod: Přizpůsobení textového zobrazení
Textové zobrazení můžete přizpůsobit úpravou některé z následujících vlastností v mapě formátu editoru:
Okraj ukazatele
Kurzor kurzoru kurzoru
Přepsání stříšky
Vybraný text
Neaktivní vybraný text (to znamená vybraný text, který ztratil fokus)
Viditelné prázdné znaky
Vytvoření projektu MEF
Vytvořte projekt VSIX jazyka C#. (V Dialogové okno Nový projekt , vyberte Visual C# / Rozšiřitelnost a pak projekt VSIX.) Pojmenujte řešení
ViewPropertyTest
.Přidejte do projektu šablonu položky klasifikátoru editoru. Další informace najdete v tématu Vytvoření rozšíření pomocí šablony položky editoru.
Odstraňte existující soubory třídy.
Definování typu obsahu
Přidejte soubor třídy a pojmenujte ho
ViewPropertyModifier
.Přidejte následující
using
direktivy:Deklarujte třídu,
TestViewCreationListener
která dědí z IWpfTextViewCreationListener. Exportujte tuto třídu s následujícími atributy:ContentTypeAttribute určit typ obsahu, na který se tento naslouchací proces vztahuje.
TextViewRoleAttribute určit roli tohoto naslouchacího procesu.
V této třídě importujte .IEditorFormatMapService
Změna vlastností zobrazení
Nastavte metodu TextViewCreated tak, aby se při otevření zobrazení změnily vlastnosti zobrazení. Pokud chcete provést změnu, nejprve vyhledejte ResourceDictionary , která odpovídá aspektu zobrazení, které chcete najít. Potom změňte odpovídající vlastnost ve slovníku prostředků a nastavte vlastnosti. Dávkujte volání SetProperties metody voláním BeginBatchUpdate metody před nastavením vlastností a potom EndBatchUpdate po nastavení vlastností.
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(); }
Sestavení a otestování kódu
Sestavte řešení.
Když tento projekt spustíte v ladicím programu, spustí se druhá instance sady Visual Studio.
Vytvořte textový soubor a zadejte nějaký text.
Kurzor kurzoru by měl být purpurový a přepsaný stříšku by měl být tyrkysový.
Okraj ukazatele (vlevo od textového zobrazení) by měl být světle zelený.
Vyberte text, který jste zadali. Barva vybraného textu by měla být světle růžová.
Když je text vybraný, klikněte kamkoli mimo textové okno. Barva vybraného textu by měla být tmavě růžová.
Zapněte viditelné prázdné znaky. (Na kartě Upravte nabídku, přejděte na položku Upřesnit a klepněte na příkaz Zobrazit prázdné znaky). Zadejte do textu několik karet. Měly by se zobrazit červené šipky, které představují karty.