带有 DataTrigger 的按钮 ControlTemplate 中的样式边框

Style Border in Buttons ControlTemplate with DataTrigger

我有以下元素:

<Button Click="btn_Click" Name="aName">
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <Border Name="tmpBorder" Padding="10">
                <TextBlock Text="General" />
            </Border>
            <ControlTemplate.Triggers>
                <DataTrigger Binding="{Binding doIt}" Value="someString">
                    <Setter TargetName="tmpBorder" Property="Background" Value="Red" />
                </DataTrigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Button.Template>
</Button>

我的目标是在 ControlTemplate 中设置 Border 元素的背景,如果 doIt 在后面的代码中设置为 "someString"。 doIt 是后面代码中定义的 class 的 public 成员,将通过方法 btn_Click.

设置

执行方法并设置doIt工作正常,但边框的背景没有变为红色。我错过了什么重要的东西吗?

这应该有效

<Button Click="btn_Click" Name="aName">
      <Button.Template>
           <ControlTemplate TargetType="Button">
               <Border Padding="10" Background="{TemplateBinding Background}">
                        <TextBlock Text="General" />
               </Border>
               <ControlTemplate.Triggers>
                        <DataTrigger Binding="{Binding doIt}" Value="someString">
                            <Setter  Property="Background" Value="Red" />
                        </DataTrigger>
               </ControlTemplate.Triggers>
           </ControlTemplate>
     </Button.Template>
</Button>

编辑:由于第一种方法不起作用,请直接尝试将样式应用于边框

如果您没有在控件模板中设置 属性 作为背景,您使用触发器所做的更改将不起作用

<Button Click="btn_Click" Name="aName">
      <Button.Template>
           <ControlTemplate TargetType="Button">
               <ControlTemplate.Resources>
                   <Style TargetType="{x:Type Border}">
                       <Setter Property="Background" Value="Transparent"/>
                       <Style.Triggers>
                           <DataTrigger Binding="{Binding doIt}" Value="someString">
                               <Setter Property="Background" Value="Red" />
                           </DataTrigger>
                       </Style.Triggers>
                   </Style>
               </ControlTemplate.Resources>
               <Border Padding="10" Background="{TemplateBinding Background}" Style>
                        <TextBlock Text="General" />
               </Border>
           </ControlTemplate>
     </Button.Template>
</Button>