StoryFragment 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 XPS 文档中的整篇文章或其中一部分。
public ref class StoryFragment
public ref class StoryFragment : System::Collections::Generic::IEnumerable<System::Windows::Documents::DocumentStructures::BlockElement ^>, System::Windows::Markup::IAddChild
public class StoryFragment
[System.Windows.Markup.ContentProperty("BlockElementList")]
public class StoryFragment : System.Collections.Generic.IEnumerable<System.Windows.Documents.DocumentStructures.BlockElement>, System.Windows.Markup.IAddChild
type StoryFragment = class
interface IAddChild
[<System.Windows.Markup.ContentProperty("BlockElementList")>]
type StoryFragment = class
interface IAddChild
interface seq<BlockElement>
interface IEnumerable
[<System.Windows.Markup.ContentProperty("BlockElementList")>]
type StoryFragment = class
interface seq<BlockElement>
interface IEnumerable
interface IAddChild
Public Class StoryFragment
Public Class StoryFragment
Implements IAddChild, IEnumerable(Of BlockElement)
- 继承
-
StoryFragment
- 属性
- 实现
示例
以下示例演示 <StoryFragment>
XML 纸张规范 (XPS) 文档的部分。
<StoryFragment StoryName="DocumentBody" FragmentType="Content">
<SectionStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1Heading1" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1P1" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1P2" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1P3" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1P4" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1P5" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1Heading2" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1P6" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="Pg1P7" />
</ParagraphStructure>
<TableStructure>
<TableRowGroupStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R1C1P1" />
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R1C2P1" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R2C1P1" />
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R2C2P1" />
</ParagraphStructure>
<ParagraphStructure>
<NamedElement NameReference="R2C2P2" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R3C1P1" />
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R3C2P1" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R4C1P1" />
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R4C2P1" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R5C1P1" />
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="R5C2P1" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
</TableRowGroupStructure>
</TableStructure>
</SectionStructure>
</StoryFragment>
注解
XPS 文档中的 XPS 文章大致类似于报纸或杂志中的文章。 它是单个 XPS 文档中的文本和图形内容的段落,通常针对单个主题。 通常,它跨多个页面,但它可以比杂志中的边栏(装箱文章)等页面短。 一个故事也可以不连续,就像头版报纸报道一样,第 4 页继续。 因此,给定页面可以包含多个文章和多个文章的一部分。 页眉或页脚也是一种完全包含在单个页面上的特殊故事。
表示 StoryFragment 文章的全部或部分。 它永远不能跨多个页面,但它可以占据整个页面或与其他片段共享页面。 如果一个故事位于多个页面上,则每个页面上的每个部分都是一个单独的片段。 尽管故事可以具有不连续的片段集,但任何片段本身都不能不连续。
只有 元素 StoryFragments 才能是 的父级 StoryFragment。 中StoryFragment元素的位置StoryBreak指示文章是否包含在多个片段中,以及附加片段是否位于当前片段之前或之后。
当 在 StoryFragment 某个结构元素的中间结束时;例如 <TableRowGroupStructure>
,则 XPS 文档生成应用程序必须为元素插入适当的结束标记 (在本例 </TableRowGroupStructure>
中) 标记之前 </StoryFragment>
,即使结构在后面的片段中继续。 (这是确保 中的 StoryFragment 元素树有效的 XML 所必需的。) 继续故事的片段必须以中断结构的开始标记开头。 必须以与 (相同的方式处理中断结构的整个树,但有一个例外,如下) 讨论:必须为中断点上方的每个不匹配的起始标记添加结束标记。
当故事中断紧接在标记之后 </TableCellStructure>
时,该异常适用,则生成应用程序必须在继续故事的片段中的相应点插入一个空表单元格结构 (<TableCellStructure></TableCellStructure>
) 。 这是必要的,以便使用需要合并给定情景的所有片段的应用程序可以使用简单的算法来执行此操作。
例如,假设应用程序想要将以下材料添加到 XPS 文档:
<SectionStructure>
<TableStructure>
<TableRowGroupStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="SomeContent" />
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="MoreContent" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="EvenMoreContent" />
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="LastContent" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
</TableRowGroupStructure>
</TableStructure>
</SectionStructure>
如果分页符强制在“SomeContent”之后 </TableCellStructure>
的 片段结束,则应用程序必须创建拆分,如以下示例所示:
<StoryFragment StoryName="MyStory" FragmentType="Content">
<SectionStructure>
<TableStructure>
<TableRowGroupStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="SomeContent" />
</ParagraphStructure>
</TableCellStructure>
<!-- lines from here to end of fragment added by producer-->
</TableRowStructure>
</TableRowGroupStructure>
</TableStructure>
</SectionStructure>
</StoryFragment>
<StoryFragment StoryName="MyStory" FragmentType="Content">
<SectionStructure>
<TableStructure>
<TableRowGroupStructure>
<TableRowStructure>
<TableCellStructure>
<!-- extra cell added by producer-->
</TableCellStructure>
<!-- lines from here to start of fragment added by producer-->
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="MoreContent" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
<TableRowStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="EvenMoreContent" />
</ParagraphStructure>
</TableCellStructure>
<TableCellStructure>
<ParagraphStructure>
<NamedElement NameReference="LastContent" />
</ParagraphStructure>
</TableCellStructure>
</TableRowStructure>
</TableRowGroupStructure>
</TableStructure>
</SectionStructure>
</StoryFragment>
读取文档的应用程序可能需要合并此内容。 例如,考虑具有“ 将整个故事复制到剪贴板 ”按钮的 XPS 查看器;或将故事传递给语音合成器 的 Blind 应用程序的 XPS 。 某些读取文档的应用程序可能需要合并文章片段的子集。 例如,通过三次单击将整个段落复制到剪贴板的功能,每当段落跨越分页符时,它都需要执行合并,因为这样的段落将在两 StoryFragment个之间拆分。
若要合并,请使用以下算法:
</StoryFragment>
从要合并的第一个片段的末尾删除 ,并从第二个片段的开头删除<StoryFragment>
。如果第一个片段的最后一个结束标记与第二个片段 (的第一个开始标记的类型相同,并且它们不是
<NamedElement>
) 标记,请同时删除它们。重复步骤 2,直到两个片段处于以下 任 一状态:
前导片段的最后一个结束标记与尾随片段的第一个开始标记之间不再存在类型匹配。
前导片段的最后一个结束标记,尾随片段的第一个起始标记都是两个
<NamedElement>
标记。
在上面的示例中,如果生成应用程序尚未添加空单元格,则合并片段将生成一个表,其第一行只有一个单元格同时包含“SomeContent”和“MoreContent”引用,而不是包含两个单元格的原始第一行,每个单元格包含一个引用
合并整个故事时,应针对属于同一文章的每个后续片段重复该算法。 属于文章的片段在 元素中 <Story>
编制索引。 请参阅 XML 纸张规范 (XPS) 规范的第 9.1.15 节 :规范和许可证下载。 给定故事的最后一个片段将有一个元素作为其最后一个 StoryBreak 子元素。
构造函数
StoryFragment() |
初始化 StoryFragment 类的新实例。 |
属性
FragmentName |
获取或设置文章段落的名称。 |
FragmentType |
获取或设置段落的类型。 |
StoryName |
获取或设置文章的名称。 |
方法
Add(BlockElement) |
将块添加到文章段落中。 |
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
显式接口实现
IAddChild.AddChild(Object) |
此成员支持 .NET Framework 结构,不能在代码中直接使用。 |
IAddChild.AddText(String) |
将节点的文本内容添加到对象。 |
IEnumerable.GetEnumerator() |
此方法尚未实现。 |
IEnumerable<BlockElement>.GetEnumerator() |
此方法尚未实现。 |