gpt4 book ai didi

css - TargetType 上的 WPF 样式选择器指定嵌套的目标类型

转载 作者:行者123 更新时间:2023-11-28 09:01:19 25 4
gpt4 key购买 nike

我将如何指定,例如,FlowDocument 中表格内的所有段落标记(不包括表格外的那些)。我期待这样的事情:

<Style TargetType="Table">
<Style TargetType="Paragraph">
<Setter Property="Margin" Value="0" />
<Style>
</Style>

然而嵌套样式是不允许的。

相当于我想在 CSS 中实现的东西是这样的:

Table Paragraph {margin:0}

因此表格范围内的所有段落标记的边距都为 0。这在 WPF 中(在 XAML 标记部分)可能吗?任何关于复杂 WPF 样式选择器的好资源也将不胜感激。

我可以编写代码来完成它,但这不是我想要的。

最佳答案

实际上可以通过创建样式然后在 Style.Resources 属性中包含一个或多个样式来进行类似于 CSS 的样式嵌套,如下所示:

    <Style TargetType="Table">
<Style.Resources>
<Style TargetType="Paragraph">
<Setter Property="Padding" Value="0" />
</Style>
</Style.Resources>
</Style>

此样式将应用于范围内的所有表格,嵌套段落样式将应用于这些表格的所有段落,但不应用于表格之外的段落。这是因为将内容放入 Resources 属性基本上会将它们注入(inject)到所有子对象的可见范围内。

从技术上讲,您还可以像这样进行多层嵌套,以便将仅在段落内部、仅在表格内部的超链接着色为绿色:

    <Style TargetType="Table">
<Style.Resources>
<Style TargetType="Paragraph">
<Setter Property="Padding" Value="0" />
<Style.Resources>
<Style TargetType="Hyperlink">
<Setter Property="Foreground" Value="Green" />
</Style>
</Style.Resources>
</Style>
</Style.Resources>
</Style>

关于css - TargetType 上的 WPF 样式选择器指定嵌套的目标类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21689259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com