コード例 #1
0
 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();
     }
 }
コード例 #2
0
        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);
            }
        }