Search code examples
wpfdata-bindingvisibilityflowdocument

How can I hide a Paragraph in a FlowDocument?


Is there any way to use databinding to show or hide a Paragraph within a FlowDocument? (I want to use MVVM, but with a FlowDocument as my view.)

Paragraph doesn't have a Visibility property. I'm not sure what else to look for.


Solution

  • I tried Chris Bova's answer, but it had a couple problems:

    1. Text selection didn't work right
    2. The text inside didn't flow like a paragraph

    My solution was to add and remove the paragraph from the flow document.

    The steps are:

    1. Name the flow document (ie flowDocument)
    2. Name the item before the paragraph you want to hide (ie previousBlock)
    3. Name the paragraph you want to hide (ie hideParagraph)

    Then:

            if (<hide paragraph>)
            {
                if (previousBlock.NextBlock == hideParagraph)
                {
                    flowDocument.Blocks.Remove(hideParagraph);
                }
            }
            else
            {
                if (previousBlock.NextBlock != hideParagraph)
                {
                    flowDocument.Blocks.InsertAfter(previousBlock, hideParagraph);
                }
            }