Parce que ça fait un mois que j'ai posté ceci et que je n'ai pas eu de réponse, je posterai ce que j'ai fini par faire. C'est plutôt stupide d'avoir écrit de cette façon, mais je n'ai pas trouvé de moyen plus simple de l'implémenter, principalement parce que la propriété Blocks n'est pas exposée via une interface commune.
public BlockCollection FindContainingCollection(Block block)
{
BlockCollection blocks = null;
FlowDocument flowDoc = block.Parent as FlowDocument;
if (flowDoc != null)
blocks = flowDoc.Blocks;
else
{
TableCell tableCell = block.Parent as TableCell;
if (tableCell != null)
blocks = tableCell.Blocks;
else
{
ListItem listItem = block.Parent as ListItem;
if (listItem != null)
blocks = listItem.Blocks;
else
{
Section section = block.Parent as Section;
if (section != null)
blocks = section.Blocks;
else
{
Figure figure = block.Parent as Figure;
if (figure != null)
blocks = figure.Blocks;
else
{
Floater floater = block.Parent as Floater;
if (floater != null)
blocks = floater.Blocks;
}
}
}
}
}
return blocks;
}
Bien que ce lien peut répondre à la question, il est préférable d'inclure les éléments essentiels de la réponse ici et de fournir le lien de référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. – Lamorak
Avoir modifié pour inclure un exemple de code. C'est juste une propriété donc la méthode dans la question n'a pas besoin d'exister. – Doug