47 lines
1.5 KiB
C#
47 lines
1.5 KiB
C#
namespace QWERTYkez.WordProcessor;
|
|
|
|
/// <summary>
|
|
/// Вспомогательный класс для замены параграфов в различных контейнерах
|
|
/// </summary>
|
|
internal static class ParagraphReplacer
|
|
{
|
|
/// <summary>
|
|
/// Заменяет параграф на новые параграфы в родительском элементе
|
|
/// </summary>
|
|
/// <param name="oldParagraph">Старый параграф для замены</param>
|
|
/// <param name="newParagraphs">Новые параграфы</param>
|
|
internal static void ReplaceParagraph(Paragraph oldParagraph, List<Paragraph> newParagraphs)
|
|
{
|
|
if (oldParagraph is null || newParagraphs is null || newParagraphs.Count == 0)
|
|
return;
|
|
|
|
var parent = oldParagraph.Parent;
|
|
if (parent is null)
|
|
return;
|
|
|
|
int paraIndex = -1;
|
|
var children = parent.ChildElements;
|
|
|
|
// Находим индекс параграфа
|
|
for (int i = 0; i < children.Count; i++)
|
|
{
|
|
if (children[i] == oldParagraph)
|
|
{
|
|
paraIndex = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (paraIndex == -1)
|
|
return;
|
|
|
|
// Удаляем старый параграф
|
|
parent.RemoveChild(oldParagraph);
|
|
|
|
// Вставляем новые параграфы
|
|
for (int i = 0; i < newParagraphs.Count; i++)
|
|
{
|
|
parent.InsertAt(newParagraphs[i], paraIndex + i);
|
|
}
|
|
}
|
|
} |