Я хочу добавить пользовательское выделение в конвертере и новый синтаксис (JSON), но продолжайте использовать MVVM et c ...
Это означает, что я не должен go таким образом:
editor.HighLight = HightLightLoader.Load()
Я пытался установить свою логику c в конверторе, но она не работает.
Как мне решить эту задачу?
public class HighlightingDefinitionConverter: IValueConverter
{
private static readonly HighlightingDefinitionTypeConverter Converter = new HighlightingDefinitionTypeConverter();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var json = value as string;
if (json.Equals("JSON"))
{
var xmlTextReader = new XmlTextReader("JSONHighLight.xshd");
return Converter.ConvertFrom(xmlTextReader);
}
return Converter.ConvertFrom(value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Converter.ConvertToString(value);
}
}
Мой xshd файл:
<?xml version="1.0" encoding="utf-8" ?>
<SyntaxDefinition name="JSON" extensions=".js" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<Color name="Digits" foreground="#8700FF" exampleText="3.14" />
<Color name="Value" foreground="#000CFF" exampleText="var text = "Hello, World!";" />
<Color name="ParamName" foreground="#057500" exampleText="var text = "Hello, World!";" />
<RuleSet ignoreCase="false">
<Keywords color="Digits" >
<Word>true</Word>
<Word>false</Word>
</Keywords>
<Span color="ParamName">
<Begin>"</Begin>
<End>(?=:)</End>
</Span>
<Span color="Value" multiline="true">
<Begin>
(?<=:)\040"[^"]*
</Begin>
<End>"</End>
</Span>
<Rule color="Digits">\b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?</Rule>
</RuleSet>
</SyntaxDefinition>