如何在FlowDocument中隐藏段落?

时间:2009-08-10 12:24:26

标签: wpf data-binding visibility flowdocument

有没有办法使用数据绑定来显示或隐藏FlowDocument中的段落? (我想使用MVVM,但使用FlowDocument作为我的视图。)

段落没有Visibility属性。我不确定还有什么要找。

4 个答案:

答案 0 :(得分:3)

我有完全相同的问题并通过将ListItem的内容包装在InlineUIContainer中来成功处理它,如下所示:

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

从这里,您可以在代码中或通过绑定设置“HideMe”的可见性。

答案 1 :(得分:2)

我尝试了Chris Bova的回答,但它有几个问题:

  1. 文字选择不正常
  2. 里面的文字不像段落那样流动
  3. 我的解决方案是在流程文档中添加和删除段落。

    步骤如下:

    1. 命名流程文档(即flowDocument)
    2. 将项目命名为要隐藏的段落(即previousBlock)
    3. 命名要隐藏的段落(即hideParagraph)
    4. 然后:

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

答案 2 :(得分:0)

我能想到的选项......

  1. 隐藏段落的内容(不包括模型中的段落)
  2. 扩展段落(或其基类之一)并为IsVisible提供依赖属性

答案 3 :(得分:0)

将fontsize设置为0.004。您可以根据需要使用样式数据触发器。