12

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.

Joe White
  • 94,807
  • 60
  • 220
  • 330

4 Answers4

3

I had the exact same problem and handled it successfully by wrapping the content of the ListItem in a InlineUIContainer, like so:

  <ListItem>
    <Paragraph>
      <InlineUIContainer>
        <TextBlock x:Name="HideMe" Visibility="Collapsed">
          <Hyperlink NavigateUri="...">Components</Hyperlink>
        </TextBlock>
      </InlineUIContainer>
    </Paragraph>
  </ListItem>

From here you can set the visbility of "HideMe" in code or through a binding.

Chris Bova
  • 49
  • 3
3

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);
            }
        }
tster
  • 17,883
  • 5
  • 53
  • 72
0

Options I can think of...

  1. Hide the content of the paragraph (don't include the paragraph in your model)
  2. Extend Paragraph (or one of its base classes) and provide a dependency property for IsVisible
  • 2
    If the Paragraph has no content, then it still takes up a full line worth of vertical space, which I'd rather avoid. As for adding an IsVisible property, how would it be implemented? – Joe White Aug 10 '09 at 17:21
-2

Set fontsize to 0.004. You can use a style data trigger if necessary.

Neil
  • 681
  • 2
  • 6
  • 12