Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AvaloneEdit如何在转换器中添加新语法_C#_Wpf_Data Binding_Avalonedit_Avaloniaui - Fatal编程技术网

C# AvaloneEdit如何在转换器中添加新语法

C# AvaloneEdit如何在转换器中添加新语法,c#,wpf,data-binding,avalonedit,avaloniaui,C#,Wpf,Data Binding,Avalonedit,Avaloniaui,我想在转换器中添加自定义突出显示和新语法(JSON),但请继续使用MVVM等 也就是说,我不能走这条路: editor.HighLight = HightLightLoader.Load() 我试图在转换器中设置我的逻辑,但它不起作用 我怎样才能完成这项任务 公共类HighlightingDefinitionConverter:IValueConverter { 私有静态只读HighlightingDefinitionTypeConverter=新的HighlightingDefinition

我想在转换器中添加自定义突出显示和新语法(JSON),但请继续使用MVVM等

也就是说,我不能走这条路:

editor.HighLight = HightLightLoader.Load()
我试图在转换器中设置我的逻辑,但它不起作用

我怎样才能完成这项任务

公共类HighlightingDefinitionConverter:IValueConverter
{
私有静态只读HighlightingDefinitionTypeConverter=新的HighlightingDefinitionTypeConverter();
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
var json=字符串形式的值;
if(json.Equals(“json”))
{
var xmlTextReader=newxmltextreader(“JSONHighLight.xshd”);
返回Converter.ConvertFrom(xmlTextReader);
}
返回ConvertFrom(值);
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
返回Converter.ConvertToString(值);
}
}
我的xshd文件:


真的
假的
"
(?=:)
(?=:)\040"[^"]*
"
\b0[xX][0-9a-fA-F]+|(\b\d+(\[0-9]+)?\[0-9]+)([eE][+-]?[0-9]+)?

SyntaxHighlighting
属性需要一个实现
IHighlightingDefinition
接口的对象。您正试图从内置的
HighlightingDefinitionTypeConverter
进入,但它不起作用,因此传递给它XmlTextReader将不起作用

可以找到从流加载语法的代码示例:


SyntaxHighlighting
属性需要一个实现
IHighlightingDefinition
接口的对象。您正试图从内置的
HighlightingDefinitionTypeConverter
进入,但它不起作用,因此传递给它XmlTextReader将不起作用

可以找到从流加载语法的代码示例:

using (var s = Resources.OpenStream(resourceName))
using (var reader = XmlReader.Create(s))
{    
    var xshd = HighlightingLoader.LoadXshd(reader, true);
    return HighlightingLoader.Load(xshd, this);
}