本文告诉大家如何使用附加属性修改按钮按下去时的背景
先让大家看个图片,下面来告诉大家如何做

首先在后台创建一个附加属性
    public class ButtonBrush    {        public static readonly DependencyProperty ButtonPressBackgroundProperty = DependencyProperty.RegisterAttached(            "ButtonPressBackground", typeof(Brush), typeof(ButtonBrush), new PropertyMetadata(default(Brush)));
        public static void SetButtonPressBackground(DependencyObject element, Brush value)        {            element.SetValue(ButtonPressBackgroundProperty, value);        }
        public static Brush GetButtonPressBackground(DependencyObject element)        {            return (Brush) element.GetValue(ButtonPressBackgroundProperty);        }    }然后在 xaml 使用附加属性
        <Button Margin="10,10,10,10"                Width="300" Height="100"                Content="确定"                local:ButtonBrush.ButtonPressBackground="#FFfcac1c" />如何在按钮按下时使用这个附加属性修改按钮颜色?实际重写按钮的样式可以看到,在按下时可以修改颜色
        <Style x:Key="Style.OkOperationButton"               TargetType="ButtonBase">            <Setter Property="Width" Value="110" />            <Setter Property="Height" Value="44" />            <Setter Property="FontSize" Value="24" />            <Setter Property="Background" Value="#FF0087FF" />            <Setter Property="HorizontalContentAlignment" Value="Center" />            <Setter Property="VerticalContentAlignment" Value="Center" />            <Setter Property="Template">                <Setter.Value>                    <ControlTemplate TargetType="{x:Type ButtonBase}">                        <Border x:Name="Border" Width="{TemplateBinding Width}"                                Height="{TemplateBinding Height}"                                CornerRadius="22" Background="{TemplateBinding Background}">                            <TextBlock x:Name="TextBlock"                                       Text="{TemplateBinding Content}"                                       FontSize="{TemplateBinding FontSize}"                                       HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"                                       VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />                        </Border>
                        <ControlTemplate.Triggers>                            <Trigger Property="IsPressed" Value="True">                                <Setter Property="Background"                                        Value="#FFfcac1c" />                                <Setter TargetName="TextBlock" Property="Foreground" Value="#FFFFFFFF" />                            </Trigger>                            <Trigger Property="IsEnabled" Value="False">                                <Setter TargetName="Border" Property="Background" Value="#4D0087FF" />                                <Setter TargetName="TextBlock" Property="Foreground" Value="#4DFFFFFF" />                            </Trigger>                        </ControlTemplate.Triggers>                    </ControlTemplate>                </Setter.Value>            </Setter>        </Style>那么如何在设置使用附加属性,实际上使用下面的代码直接从按钮获取附加属性
                  <Trigger Property="IsPressed" Value="True">                                <Setter Property="Background"                                        Value="{Binding RelativeSource = {RelativeSource Self},Path=(local:ButtonBrush.ButtonPressBackground)}" />                                <Setter TargetName="TextBlock" Property="Foreground" Value="#FFFFFFFF" />                            </Trigger>所有的代码
 <Window.Resources>
        <Style x:Key="Style.OkOperationButton"               TargetType="ButtonBase">            <Setter Property="Width" Value="110" />            <Setter Property="Height" Value="44" />            <Setter Property="FontSize" Value="24" />            <Setter Property="Background" Value="#FF0087FF" />            <Setter Property="HorizontalContentAlignment" Value="Center" />            <Setter Property="VerticalContentAlignment" Value="Center" />            <Setter Property="Template">                <Setter.Value>                    <ControlTemplate TargetType="{x:Type ButtonBase}">                        <Border x:Name="Border" Width="{TemplateBinding Width}"                                Height="{TemplateBinding Height}"                                CornerRadius="22" Background="{TemplateBinding Background}">                            <TextBlock x:Name="TextBlock"                                       Text="{TemplateBinding Content}"                                       FontSize="{TemplateBinding FontSize}"                                       HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"                                       VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />                        </Border>
                        <ControlTemplate.Triggers>                            <Trigger Property="IsPressed" Value="True">                                <Setter Property="Background"                                        Value="{Binding RelativeSource = {RelativeSource Self},Path=(local:ButtonBrush.ButtonPressBackground)}" />                                <Setter TargetName="TextBlock" Property="Foreground" Value="#FFFFFFFF" />                            </Trigger>                            <Trigger Property="IsEnabled" Value="False">                                <Setter TargetName="Border" Property="Background" Value="#4D0087FF" />                                <Setter TargetName="TextBlock" Property="Foreground" Value="#4DFFFFFF" />                            </Trigger>                        </ControlTemplate.Triggers>                    </ControlTemplate>                </Setter.Value>            </Setter>        </Style>
    </Window.Resources>    <Grid>        <Button Margin="10,10,10,10" Style="{StaticResource Style.OkOperationButton}"                Width="300" Height="100"                Content="确定"                local:ButtonBrush.ButtonPressBackground="#FFfcac1c" />    </Grid>代码:下载
   本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。 欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。