2017-11-14 2 views
0

Ich habe eine Datenvorlage definiert in XAML als hinzuzufügen:Wie Ereignishandler zu einem C# AvalonEdit Caret Position Ereignis in XAML

<DataTemplate> 
<avalonEdit:TextEditor 
    Name="xmlEditor" 
    SyntaxHighlighting="XML" 
    FontFamily="Consolas" 
    FontSize="10pt" 
/> 
</DataTemplate> 

Ich brauche eine ICSharpCode.AvalonEdit.TextEditor.TextArea.Caret.PositionChanged hinzufügen Ereignis zu diesem. Wie kann ich das machen?

Antwort

0

Sie können nicht auf diese in Ihrem XAML zugreifen, müssen Sie dies in Ihrem Code hinter setzen.

Sie können dies wie folgt tun:

AvalonTextEditorControl.TextArea.Caret.PositionChanged += new EventHandler(
    (sender, args) => { 
     // do some stuff 
    } 
); 

oder mit einem separaten Event-Funktion statt, wenn Sie es vorziehen:

AvalonTextEditorControl.TextArea.Caret.PositionChanged += TextEditorCaret_PositionChanged; 

private void TextEditorCaret_PositionChanged(object sender, EventArgs e) 
{ 
    // do some stuff 
} 

aktualisieren

Wenn Sie möchte es in Ihrem XAML verwenden, vielleicht wegen Ihrer DataTemplate. Sie müssen dies selbst implementieren. Ich habe zwei Optionen:

  1. Holen Sie sich die Quelle von ICSharpCode.AvalonEdit auf GitHub und ändern Sie die TextEditor-Klasse. Fügen Sie einfach einen EventHandler hinzu und rufen Sie ihn im TextArea.Caret.PositionChanged-Event auf.
  2. Erstellen Sie Usercontrol besitzen, die von der ICSharpCode.AvalonEdit Texteditor erbt und die Eventhandler wie in Option hinzufügen 1.
Verwandte Themen