Finden aller Bilder in einem FlowDocument

Da WPF FlowDocuments für mich ziemlich neu ist, möchte ich fragen, ob der folgende Code korrekt ist. Es soll alle in einem FlowDocument enthaltenen Bilder als Liste zurückgeben:

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;
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage