Текстовый редактор Avalon отображает обратную косую черту (\) или подчеркивание (__) при выборе специальных символов внуC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Текстовый редактор Avalon отображает обратную косую черту (\) или подчеркивание (__) при выборе специальных символов вну

Сообщение Anonymous »

В моем приложении WPF у меня есть несколько текстовых полей avalon, которые принимают тексты в формате JSON. Для подсветки синтаксиса я использую официальный файл .xshd (https://github.com/icsharpcode/AvalonEd ... /Json.xshd)
Проблема: Когда я набираю «some, text» в текстовом поле avalon и выбираю символ запятой, дважды щелкнув мышью (или используя сочетание клавиш для выбора), он автоматически отображает обратную косую черту (\). Аналогично, если мы выберем любые другие специальные символы, например { или }, отобразится __.

Странно, правда?
Изображение

Поскольку мои текстовые поля Avalon используются в нескольких окнах, я централизую текстовый редактор Avalon в классе и создаю экземпляр его объект внутри файлов xaml везде, где мне нужно.
Ниже приведена общая реализация класса, в которой свойство Text становится свойством зависимости, чтобы я мог связать свойство text с моим свойством модели представления

Код: Выделить всё

public class CustomizedPrettyJSONTextBox : TextEditor, INotifyPropertyChanged
{
public CustomizedPrettyJSONTextBox()
{
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("mynamespace.JSONSyntaxColoringRule.xshd"))
{
if (stream != null)
{
using (XmlReader reader = new XmlTextReader(stream))
{
IHighlightingDefinition highlightingDefinition = HighlightingLoader.Load(reader, HighlightingManager.Instance);
((TextEditor)this).SyntaxHighlighting = highlightingDefinition;
}
}
}
}

public static DependencyProperty TextProperty =
DependencyProperty.Register("Text",
typeof(string), typeof(CustomizedPrettyJSONTextBox),
new PropertyMetadata((obj, args) =>
{
CustomizedPrettyJSONTextBox target = (CustomizedPrettyJSONTextBox)obj;
if (target.Text != (string)args.NewValue)
target.Text = (string)args.NewValue;
})
);

public string Text
{
get { return base.Text; }
set { base.Text = Helpers.GetProperJSONFormat(value); }
}

protected override void OnTextChanged(EventArgs e)
{
SetCurrentValue(TextProperty, base.Text);
RaisePropertyChanged(TextProperty.Name);
base.OnTextChanged(e);
}

public event PropertyChangedEventHandler? PropertyChanged;
public void RaisePropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
Ниже приведен пример того, как я использую этот объект класса внутри файла xaml Пожалуйста, помогите мне, как избежать такого поведения.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ing-specia
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»