本文整理汇总了C#中Selection.Equals方法的典型用法代码示例。如果您正苦于以下问题:C# Selection.Equals方法的具体用法?C# Selection.Equals怎么用?C# Selection.Equals使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Selection
的用法示例。
在下文中一共展示了Selection.Equals方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SetTextVisualSelections
// Преобразует весь текст, содержащийся в заданном параграфе в отформатированный текст, согласно переданному списку выделений
public static void SetTextVisualSelections(Paragraph paragraph, List<Selection> selections = null)
{
if (paragraph == null)
return;
string text = (new TextRange(paragraph.ContentStart, paragraph.ContentEnd)).Text;
paragraph.Inlines.Clear();
if (selections == null || selections.Count == 0)
{
paragraph.Inlines.Add(new Run(text));
return;
}
// Сортируем переданный список выделений по приоритету
selections.Sort((a, b) => { return a.priority.CompareTo(b.priority) * (-1); });
bool currentSelectionIsDefault;
Selection currentSelection = new Selection();
bool lastSelectionIsDefault = true;
Selection lastSelection = new Selection();
int selectionStart = 0;
// Проходимся по каждому символу в тексте параграфа
for (int charIdx = 0; charIdx < text.Length; charIdx++)
{
currentSelectionIsDefault = true;
foreach (var selection in selections)
{
if (charIdx >= selection.range.firstIndex && charIdx <= selection.range.lastIndex)
{
currentSelectionIsDefault = false;
currentSelection = selection;
break;
}
}
// Если это первый символ в тексте статьи, то добавлять новый run смысла нет
bool needToAddNewRun = charIdx != 0 &&
// Нужно добавлять новый run, если:
(
// прошлый символ был дефолтным, а текущий недефолтный и наоборот (поменялась дефолтность)
currentSelectionIsDefault != lastSelectionIsDefault ||
// символ недефолтный, но при этом поменялись свойства selection-а
(!currentSelectionIsDefault && !currentSelection.Equals(lastSelection))
);
if (needToAddNewRun)
{
// Добавляем Run в параграф с заданным форматом выделения
AddInlineToParagraph(paragraph, text.Substring(selectionStart, ((charIdx - 1) - selectionStart) + 1), lastSelectionIsDefault, lastSelection);
// Ставим позицию начала следующего элемента Run в текущий символ
selectionStart = charIdx;
}
lastSelectionIsDefault = currentSelectionIsDefault;
lastSelection = currentSelection;
}
// Добавляем последний параграф
AddInlineToParagraph(paragraph, text.Substring(selectionStart, ((text.Length - 1) - selectionStart) + 1), lastSelectionIsDefault, lastSelection);
}