protected override void OnTextChanged(EventArgs e) { if (_highlighting) { return; } _highlightTimer.Change(Delay, int.MaxValue); HideAutoCompleteForm(); _visitor.Clear(); if (!string.IsNullOrEmpty(Text)) { var nodes = _parser.Parse(Text); _visitor.Visit(nodes); } base.OnTextChanged(e); if (!_isUndo) { _redoStack.Clear(); _undoList.Insert(0, _lastInfo); UpdateUndoLimit(); _lastInfo = UndoRedoInfo.Create(this); } if (CanAutoComplete(true)) { ShowAutoComplete(); } }
public string GetBindingText() { if (string.IsNullOrEmpty(Text)) { return(Text); } try { var nodes = _parser.Parse(Text); _visitor.Visit(nodes); int delta = 0; string text = Text; foreach (var node in _visitor.Nodes.OfType <XmlValueExpressionNode>()) { if (node.Type != XmlValueExpressionType.AttributeValue) { continue; } var start = node.Start + 1 + delta; var length = node.Length - 2; var oldValue = text.Substring(start, length); int oldLength = oldValue.Length; foreach (var replaceKeyword in ReplaceKeywords) { oldValue = oldValue.Replace(replaceKeyword.Value, replaceKeyword.Key); } var localDelta = oldValue.Length - oldLength; if (localDelta == 0) { continue; } delta += localDelta; text = text.Remove(start, length).Insert(start, oldValue); } return(text); } catch { return(Text); } }