如何在 FlowDocument 中隐藏段落?
Posted
技术标签:
【中文标题】如何在 FlowDocument 中隐藏段落?【英文标题】:How can I hide a Paragraph in a FlowDocument? 【发布时间】:2010-11-18 06:45:15 【问题描述】:有没有办法使用数据绑定来显示或隐藏 FlowDocument 中的段落? (我想使用 MVVM,但我的视图是 FlowDocument。)
段落没有可见性属性。我不确定还要寻找什么。
【问题讨论】:
【参考方案1】:将字体大小设置为 0.004。如有必要,您可以使用样式数据触发器。
【讨论】:
【参考方案2】:我尝试了 Chris Bova 的回答,但有几个问题:
-
文本选择不正确
里面的文字不像段落那样流动
我的解决方案是在流文档中添加和删除段落。
步骤如下:
-
为流文档命名(即flowDocument)
在要隐藏的段落之前命名项目(即previousBlock)
为您要隐藏的段落命名(即 hideParagraph)
然后:
if (<hide paragraph>)
if (previousBlock.NextBlock == hideParagraph)
flowDocument.Blocks.Remove(hideParagraph);
else
if (previousBlock.NextBlock != hideParagraph)
flowDocument.Blocks.InsertAfter(previousBlock, hideParagraph);
【讨论】:
【参考方案3】:我遇到了完全相同的问题,并通过将 ListItem 的内容包装在 InlineUIContainer 中成功处理了它,如下所示:
<ListItem>
<Paragraph>
<InlineUIContainer>
<TextBlock x:Name="HideMe" Visibility="Collapsed">
<Hyperlink NavigateUri="...">Components</Hyperlink>
</TextBlock>
</InlineUIContainer>
</Paragraph>
</ListItem>
从这里您可以在代码中或通过绑定设置“HideMe”的可见性。
【讨论】:
【参考方案4】:我能想到的选项...
-
隐藏段落的内容(不要在模型中包含该段落)
扩展 Paragraph(或其基类之一)并为 IsVisible 提供依赖属性
【讨论】:
如果段落没有内容,那么它仍然会占用一整行的垂直空间,我宁愿避免这种情况。至于添加 IsVisible 属性,如何实现?以上是关于如何在 FlowDocument 中隐藏段落?的主要内容,如果未能解决你的问题,请参考以下文章