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:
LINQ is just freaking magical:
public IEnumerable FindImages(FlowDocument document)
{
return document.Blocks.SelectMany(FindImages);
}
public IEnumerable FindImages(Block block)
{
if (block is Table)
{
return ((Table)block).RowGroups
.SelectMany(x => x.Rows)
.SelectMany(x => x.Cells)
.SelectMany(x => x.Blocks)
.SelectMany(FindImages);
}
if (block is Paragraph)
{
return ((Paragraph) block).Inlines
.OfType()
.Where(x => x.Child is Image)
.Select(x => x.Child as Image);
}
if (block is BlockUIContainer)
{
Image i = ((BlockUIContainer) block).Child as Image;
return i == null
? new List()
: new List(new[] {i});
}
throw new InvalidOperationException("Unknown block type: " + block.GetType());
}