C# 设置从现有属性WPF ControlTemplate获取的属性值

C# 设置从现有属性WPF ControlTemplate获取的属性值,c#,wpf,controltemplate,C#,Wpf,Controltemplate,我在做WPF控制模板。 我想说的是,每当鼠标悬停事件在我的按钮上触发时,它们的背景颜色都会变成它们的边框笔刷颜色 <Style TargetType="Button"> <Setter Property="Cursor" Value="Hand"/> <Setter Property="Background" Value="White"/> <Setter Property="Template">

我在做WPF控制模板。 我想说的是,每当鼠标悬停事件在我的按钮上触发时,它们的背景颜色都会变成它们的边框笔刷颜色

 <Style TargetType="Button">
     <Setter Property="Cursor" Value="Hand"/>
     <Setter Property="Background" Value="White"/>
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="Button">
                 <Grid>
                     <Border x:Name="Border" CornerRadius="6" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
                         <TextBlock x:Name="ContentBlock" Foreground="{TemplateBinding Foreground}" Text="{TemplateBinding Content}" VerticalAlignment="Center"  HorizontalAlignment="Center"></TextBlock>
                     </Border>
                 </Grid>
                 <ControlTemplate.Triggers>
                     <Trigger Property="IsEnabled" Value="false">
                         <Setter TargetName="Border" Property="BorderBrush" Value="Gray"></Setter>
                         <Setter TargetName="ContentBlock" Property="Foreground"  Value="Gray"></Setter>
                     </Trigger>
                     <Trigger Property="IsMouseOver" Value="true">
                         <!--<Setter TargetName="Border" Property="Background" Value="Border.BorderBrush"></Setter>-->
                     </Trigger>
                 </ControlTemplate.Triggers>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>

在下面的一行中,我试图从我的按钮上取下borderBrush。但我不能这样做:

 <!--<Setter TargetName="Border" Property="Background" Value="Border.BorderBrush"></Setter>-->

您可以创建
绑定
,将
相对资源
设置为
边框
本身,从而允许您绑定到
边框
自己的
边框笔刷
属性:

<Setter TargetName="Border" Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=BorderBrush}" />

我认为在触发器中设置参考值并非易事。 如果您使用颜色设置值,您设置背景的方式是否存在问题

    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter TargetName="Border" 
     Property="BorderBrush" Value="Gray"></Setter>
                            <Setter TargetName="ContentBlock" 
    Property="Foreground"  Value="Gray"></Setter>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter TargetName="Border" 
    Property="Background" Value="Gray" />
                        </Trigger>
                    </ControlTemplate.Triggers>

您应该使用绑定,而不仅仅是在值中给出路径。