首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改包含ContentPresenter和TextBlock的ContentTemplate的前景色

更改包含ContentPresenter和TextBlock的ContentTemplate的前景色
EN

Stack Overflow用户
提问于 2016-05-02 11:05:12
回答 1查看 2.1K关注 0票数 0

我有下面的代码,它是一个带有几何图标的按钮

代码语言:javascript
复制
<Button Style="{StaticResource Button}" IsEnabled="False">
    <DockPanel>
        <ContentControl Template="{StaticResource geometryMenuContentTemplate}"
                        DataContext="{StaticResource keyboardButtonGeometry}"
                        Style="{StaticResource TopBarIcon}" />
        <TextBlock Style="{StaticResource TopBarHeaderText}" Text="KEYBOARD"/>
    </DockPanel>
</Button>

<ControlTemplate x:Key="geometryMenuContentTemplate" TargetType="ContentControl">
    <Canvas>
        <Path Width="25" Height="25" Stretch="Fill" Fill="{TemplateBinding Foreground}" Data="{Binding}"/>
    </Canvas>
</ControlTemplate>

<StreamGeometry x:Key="keyboardButtonGeometry">
    F1 M 15.8333,2...
</StreamGeometry>

以:

代码语言:javascript
复制
<Style x:Key="Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
    <Setter Property="Foreground" Value="{StaticResource StandardForegroundColor}" />
    <Setter Property="Template" Value="{StaticResource ButtonTemplate}" />
</Style>

<ControlTemplate x:Key="ButtonTemplate" TargetType="Button">
    <Border BorderThickness="{TemplateBinding BorderThickness}"
            BorderBrush="{TemplateBinding BorderBrush}"
            Padding="{TemplateBinding Padding}"
            Background="{TemplateBinding Background}">
        <ContentPresenter Name="ButtonContentPresenter" Margin="{TemplateBinding Padding}" TextBlock.Foreground="Red"/>
    </Border>
</ControlTemplate>


<Style x:Key="TopBarHeaderText" TargetType="TextBlock" BasedOn="{StaticResource StatsHeaderText}">
    <Setter Property="Foreground" Value="White" />
</Style>

我的代码的可视输出如下:

我想将(在ButtonTemplate中) ContentPresenter中的Textblock的前景色更改为红色。我的代码只改变了图标的颜色,而不是TextBlock。为什么?如何只更改Textblock

我想得到这样的东西:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-03 05:44:46

在阅读您的代码时,我注意到您的TextBlock有一个名为TopBarHeaderText的样式,但我在您的问题中没有看到这种样式。图像改变颜色的原因是因为您将其设置为填充为{TemplateBinding前台}--也许将该设置放在TextBlock ( TopBarHeaderText样式)的样式中?

看起来(根据我正在看到的代码),您可能意外地翻转了geometryMenuContentTemplate和TopBarHeaderText中的颜色定义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36980938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档