void SourceTextBox_TextChanged(object sender, TextChangedEventArgs e) { AssociatedObject.Inlines.Clear(); SearchStringParseResult result = new SearchStringParser.SearchStringParser().Parse(SourceTextBox.Text, SearchStringParseSettings.Default); foreach (var info in result.PhaseInfos) { var run = new Run(info.Text); switch (info.Modificator) { case SearchModificator.None: run.Style = info.Grouped ? RunRegularGroupStyle : RunRegularStyle; break; case SearchModificator.Include: run.Style = info.Grouped ? RunIncludeGroupStyle : RunIncludeStyle; break; case SearchModificator.Exclude: run.Style = info.Grouped ? RunExcludeGroupStyle : RunExcludeStyle; break; case SearchModificator.Field: run.Style = RunFieldStyle; break; case SearchModificator.Group: run.Style = RunGroupQuoteStyle; break; } AssociatedObject.Inlines.Add(run); ResultListBox.ItemsSource = result.PhaseInfos; } }
void AssociatedObject_TextChanged(object sender, TextChangedEventArgs e) { if (locked) { return; } if (paragraph == null) { return; } if (paragraph.Inlines.Count == 0) { return; } locked = true; List <Inline> inlines = new List <Inline>(); StringBuilder sb = new StringBuilder(); foreach (Run inline in paragraph.Inlines) { sb.Append(inline.Text); } SearchStringParseResult result = new SearchStringParser.SearchStringParser().Parse(sb.ToString(), SearchStringParseSettings.Default); paragraph.Inlines.Clear(); foreach (var info in result.PhaseInfos) { var run = new Run(info.Text); switch (info.Modificator) { case SearchModificator.None: run.Style = info.Grouped ? RunRegularGroupStyle : RunRegularStyle; break; case SearchModificator.Include: run.Style = info.Grouped ? RunIncludeGroupStyle : RunIncludeStyle; break; case SearchModificator.Exclude: run.Style = info.Grouped ? RunExcludeGroupStyle : RunExcludeStyle; break; case SearchModificator.Field: run.Style = RunFieldStyle; break; case SearchModificator.Group: run.Style = RunGroupQuoteStyle; break; } paragraph.Inlines.Add(run); } AssociatedObject.CaretPosition = AssociatedObject.Document.ContentEnd; locked = false; }