Wpf 属性触发器中按钮的前景未更改

Wpf 属性触发器中按钮的前景未更改,wpf,button,triggers,Wpf,Button,Triggers,为什么触发会起作用(鼠标结束时将按钮的前景更改为“红色”) 但当按钮的前景被设置为颜色(在本例中为“蓝色”)时,该触发器不是吗 按钮的本地值覆盖样式。尝试: <Grid> <Grid.Resources> <Style TargetType="{x:Type Button}"> <Setter Property="Foreground" Value="Blue"/> &l

为什么触发会起作用(鼠标结束时将按钮的前景更改为“红色”)


但当按钮的前景被设置为颜色(在本例中为“蓝色”)时,该触发器不是吗


按钮的本地值覆盖样式。尝试:

<Grid>

    <Grid.Resources>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Foreground" Value="Blue"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>

    <Button Content="Hello"/>

</Grid>

我知道这是一篇老文章,但这是解决方案(在属性触发器中)。答复:

<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="Blue"/>

最合乎逻辑的方法是:

<Setter Property="Foreground" Value="Blue"/>


但是。。不工作..

只需添加一个控件模板,然后以您的样式将
ContentPresenter
TextElement.前台
绑定到
{TemplateBinding前台}

<Grid>
    <Grid.Resources>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                            <ContentPresenter TextElement.Foreground="{TemplateBinding Foreground}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <Button Content="Hello"/>
</Grid>

我不确定,但我认为最好删除除英语以外的特定语言的句子。
<Setter Property="Foreground" Value="Blue"/>
<Grid>
    <Grid.Resources>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                            <ContentPresenter TextElement.Foreground="{TemplateBinding Foreground}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <Button Content="Hello"/>
</Grid>