Ở bên file style (dictionary) bạn cần phải làm những cái sau:
Khai báo 1 gradient cho màu default của nút.
<LinearGradientBrush x:Key="DefaultButtonBackground" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="#FFE0E0E0" Offset="0"/>
<GradientStop Color="#FFB0B0B0" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
Và 1 màu khi nhấn nút
<LinearGradientBrush x:Key="PressButtonBackground" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="#FFB0B0B0" Offset="0"/>
<GradientStop Color="#FFE0E0E0" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
Bắt đầu chỉnh sửa ControlTemplate
<!-- Ở chỗ này đang là chỉnh Template. Tức là tất cả các nut mặc định sẽ thay đổi theo
Nếu muốn chỉ áp dụng cho 1 số nut thì thêm đoạn xác định key vào. Ví dụ
<Style TargetType="Button" x:Key="MyButtonStyle">
-->
<Style TargetType="Button">
<!-- Set màu mặc định của nút -->
<Setter Property="Background" Value="{DynamicResource DefaultButtonBackground}"/>
<!-- Bắt đầu sửa ControlTemplate -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<!-- Bao ngoài bút bằng 1 bor der có góc tròn 3 pixel, viền , màu viền, màu nền liên kết với Button-->
<Border Background="{TemplateBinding Background}" CornerRadius="3" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
<!-- Bên trong border chứa ContentPresenter (chính là nội dung) của nút. Vị trí neo liên kết với button -->
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Border>
<!-- Chỗ này bắt đầu sửa đến ControlTempalte Trigger. Thay đổi màu ở đây-->
<ControlTemplate.Triggers>
<!--Trong sự kiện Press-->
<Trigger Property="IsPressed" Value="True">
<!-- Thì đổi màu button sang gradient thứ 2. Border được liên kết background thì nó cũng đổi background theo-->
<Setter Property="Background" Value="{DynamicResource PressButtonBackground}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Nếu là tempalte thì mọi nút sẽ tự động đổi template theo.
Nếu là style, để chỉ định nút nào được áp dụng style thì set style của nó
<!-- Với tên Style xác định bằng dòng x:Key="..." trong file dictionary/>
<Button Style="{DynamicResource MyButtonStyle"} />