- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我覆盖了 wpf 扩展器的模板。
header 有 ContentPresenter
<ContentPresenter x:Name="HeaderContent"
Grid.Column="1"
Margin="0,0,4,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
RecognizesAccessKey="True"
SnapsToDevicePixels="True"
>
<ContentPresenter.Resources>
<Style BasedOn="{StaticResource Expanderheader-Naming}"
TargetType="{x:Type TextBlock}" />
</ContentPresenter.Resources>
</ContentPresenter>
<Expander Header="HelloWorld">
<Expander>
<Expander.Header>
<Grid x:Name="MyGrid">
<TextBlock>Hello Man</TextBlock>
</Grid>
</Expander.Header>
</Expander>
最佳答案
您在 wpf 中遇到了典型的样式继承问题。
控件在初始化时查找其样式。控件查找其样式的方式是在逻辑树中向上移动并询问逻辑父级是否有合适的样式存储在父级的资源字典中。
为了向您解释您在示例中做错了什么,让我们这样想。
在第一个示例中, header 仅存储“HelloWorld”,稍后在初始化控件时,“HelloWorld”将被注入(inject) ContentPresenter。这种方法为“HelloWorld”提供了 ContentPresenter 作为它的逻辑父级,因此可以正确应用样式,因为可以找到样式。
在第二个示例中,您创建了一个网格,并且在该网格内您有一个 TextBlock。
在控制点初始化时,TextBlock 的逻辑父级是 Grid,而且 Grid 的逻辑父级是 Expander 本身。在寻找 TextBlock 的样式时,WPF 将询问 TextBlock 的逻辑父级是否在其资源中为 TextBlock 提供了正确的样式,答案是否定的。 Grid.Resources 中的 TextBlock 没有合适的样式,Expander.Resources 中的 TextBlock 也没有合适的样式。
正确的样式应该在 ContentPresenter 中,只是在这种情况下 ContentPresenter 不是逻辑树的一部分。
这就是您在第二个示例中失去风格的方式。
为了解决这个问题,我建议您坚持第一个示例或更改样式的存储位置。通常所有样式都应存储在 Window.Resources 中。
编辑 2
仔细看一下这个例子:
<Window.Resources>
<Style x:Key="textBlockStyle" TargetType="TextBlock">
<Setter Property="Background" Value="Blue"/>
</Style>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<ContentPresenter>
<ContentPresenter.Resources>
<Style TargetType="TextBlock" BasedOn="{StaticResource textBlockStyle}"/>
</ContentPresenter.Resources>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<StackPanel>
<Button Content="Yay, it worked!" />
<Button>
<Grid>
<TextBox Text="It doesn't work this way!"/>
</Grid>
</Button>
<Button>
<Grid>
<Grid.Resources>
<Style TargetType="TextBlock" BasedOn="{StaticResource textBlockStyle}"></Style>
</Grid.Resources>
<TextBlock Text="Yay it works again! Woop Woop"/>
</Grid>
</Button>
</StackPanel>
关于wpf - 为 ContentPresenter 中的所有元素设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20116418/
我喜欢调整 目录的样式(例如背景颜色、字体)预订 , Gitbook 风格 HTML 文档。 这可能吗?如果是这样,有人可以善意地指出我可以开始这样做的地方吗? 谢谢你。 最佳答案 两个步骤: 1)
是否可以使用纯 CSS 选择器根据子节点的兄弟节点数量为节点子节点(在我的例子中为 UL)提供不同的属性,特别是高度? 例如,如果一个节点有 1 个子节点,则 UL 的高度是自动的,但是如果该节点有
我正在与 Vala 一起工作,它首先编译为 C,然后正常从 C 编译。 valac 的一项功能(Vala 编译器)是为 .vala 生成“fast-vapi”文件。 fast-vapi 本质上是为 .
我有两个具有 .body 类的 div,但是,一个位于另一个具有 .box 类的 div 中 - 如下所示: 我只想为 .box 内部的 .body 设置样式...但我在下面所
**注意所有 <> 标签已被删除以允许代码显示**我已经玩了好几个小时了,如果不在设计结束时使用解决方法(即 Corel 绘图),我就无法真正让它工作 *在我继续之前, 首先,网站 URL 是 Adv
我从一个服务中接收到一个字符串,该字符串显然使用 UTF-32 编码对其 unicode 字符进行编码,例如:\U0001B000(C 风格的 unicode 编码)。但是,为了在 JSON 中序列化
我在应用程序资源中有一种样式,我想将其应用于许多不同的饼图。样式如下所示: 为了简单起见,我排除了更多的属性。这一切都很好。现在,我的一些馅饼需要有一个不同的“模型
想象一下,我有一个名为“MyCheckBoxStyle”的 CheckBox 自定义样式。 如何制作基于 MyCheckBoxStyle 嵌入自定义 DataGridCheckBoxColumn 样式
我有一个 Button我在 WPF 中开发的样式,如 this question 中所述.我想用这种风格做的另一件事是拥有 Button缩小一点点,使其看起来像被点击一样被点击。现在,转换代码如下所示
我为超链接控件创建了一个样式:
不知道为什么,但我的 typeahead.js 远程自动完成停止工作。我没有更改任何关于 typeahead.js 的代码,但既然它坏了,我一定是错的。你能看看我的site here吗? ?我会创建
有没有办法创建扩展当前样式的样式,即不是特定样式? 我有一个 WPF 应用程序,我在其中创建样式来设置一些属性,例如边框或验证。 现在我想尝试一些主题,看看哪
我正在为一个网站提出问题,并希望 var reltext 中的正确/再试消息具有不同的颜色,即绿色表示正确,红色表示错误,并且每个旁边可能有一个小 png。 有什么想法吗? A local co
我想到达列表的父节点(使用 id 选择器)并使用纯 JavaScript 添加背景颜色来设置其样式。这是我的代码,但不起作用。 var listParentNode; listPare
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 4 年前。 Improve th
过去几天我一直在与这段代码作斗争,我真的不知道该如何处理它。 基本上,当用户将鼠标滚动到主导航菜单中的某个 LI 元素上时,就会运行一个 Javascript 函数,并根据触发该函数的元素将链接放入下
使用这个可爱的 html 和 css 作为指南,我能够在我的照片上显示我的姓名首字母。 这很好,但是,如果图像不存在,我只想显示首字母;如果图像存在,则不应渲染 peron 首字母。 换句话说,当该图
使用这个可爱的 html 和 css 作为指南,我能够在我的照片上显示我的姓名首字母。 这很好,但是,如果图像不存在,我只想显示首字母;如果图像存在,则不应渲染 peron 首字母。 换句话说,当该图
是否有人尝试过将 JButton 设计为看起来像 NetBeans 工具栏按钮?这将只显示一张图片,当您将鼠标悬停在它上面时,会显示 1px 圆形角灰色边框,并且按钮顶部和底部的背景不同......似
在 Ax2012 中使用图表,它们工作正常。但我想更改它在启动时显示的图表类型,例如“样条”图表,而不是默认的“柱状图”图表。 这是我现在拥有的: http://i.stack.imgur.com/R
我是一名优秀的程序员,十分优秀!