C# 设置从现有属性WPF ControlTemplate获取的属性值
我在做WPF控制模板。 我想说的是,每当鼠标悬停事件在我的按钮上触发时,它们的背景颜色都会变成它们的边框笔刷颜色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">
<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>
您应该使用绑定,而不仅仅是在值中给出路径。