Проблема: Когда я набираю «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));
}
}
}
Код: Выделить всё
Подробнее здесь: https://stackoverflow.com/questions/784 ... ing-specia