Since I am pretty new to WPF FlowDocuments I would like to ask if the code below is correct. It is supposed to return all Images contained in a FlowDocument as List:
List<Image> FindAllImagesInParagraph(Paragraph paragraph)
{
List<Image> result = null;
foreach (var inline in paragraph.Inlines)
{
var inlineUIContainer = inline as InlineUIContainer;
if (inlineUIContainer != null)
{
var image = inlineUIContainer.Child as Image;
if (image != null)
{
if (result == null)
result = new List<Image>();
result.Add(image);
}
}
}
return result;
}
private List<Image> FindAllImagesInDocument(FlowDocument Document)
{
List<Image> result = new List<Image>();
foreach (var block in Document.Blocks)
{
if (block is Table)
{
var table = block as Table;
foreach (TableRowGroup rowGroup in table.RowGroups)
{
foreach (TableRow row in rowGroup.Rows)
{
foreach (TableCell cell in row.Cells)
{
foreach (var block2 in cell.Blocks)
{
if (block2 is Paragraph)
{
var paragraph = block2 as Paragraph;
var images = FindAllImagesInParagraph(paragraph);
if (images != null)
result.AddRange(images);
}
else if (block2 is BlockUIContainer)
{
var container = block as BlockUIContainer;
if (container.Child is Image)
{
var image = container.Child as Image;
result.Add(image);
}
}
}
}
}
}
}
else if (block is Paragraph)
{
var paragraph = block as Paragraph;
var images = FindAllImagesInParagraph(paragraph);
if (images != null)
result.AddRange(images);
}
else if (block is BlockUIContainer)
{
var container = block as BlockUIContainer;
if(container.Child is Image)
{
var image = container.Child as Image;
result.Add(image);
}
}
}
return result.Count > 0 ? result : null;
}