首页 > 其他 > 详细

模板之在使用模板绑定时,利用样式提供默认值

时间:2021-02-03 23:25:43      阅读:36      评论:0      收藏:0      [点我收藏+]
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ControlTemplates.GradientButton"
    >

    <!-- Resources used by the template. -->
    <RadialGradientBrush RadiusX="1" RadiusY="5" GradientOrigin="0.5,0.3"
     x:Key="HighlightBackground">
      <GradientStop Color="White" Offset="0" />
      <GradientStop Color="Blue" Offset=".4" />
    </RadialGradientBrush>

    <RadialGradientBrush RadiusX="1" RadiusY="5" GradientOrigin="0.5,0.3"
     x:Key="PressedBackground">
      <GradientStop Color="White" Offset="0" />
      <GradientStop Color="Blue" Offset="1" />
    </RadialGradientBrush>

    <SolidColorBrush Color="Blue" x:Key="DefaultBackground"></SolidColorBrush>
    <SolidColorBrush Color="Gray" x:Key="DisabledBackground"></SolidColorBrush>

    <RadialGradientBrush RadiusX="1" RadiusY="5" GradientOrigin="0.5,0.3"
     x:Key="Border">
      <GradientStop Color="White" Offset="0" />
      <GradientStop Color="Blue" Offset="1" />
    </RadialGradientBrush>

    <!-- The button control template. -->
    <ControlTemplate x:Key="GradientButtonTemplate" TargetType="{x:Type Button}">
      <Border Name="Border" BorderBrush="{StaticResource Border}" BorderThickness="2"
       CornerRadius="2" Background="{TemplateBinding Background}"
       TextBlock.Foreground="White">
        <Grid>
          <Rectangle Name="FocusCue" Visibility="Hidden" Stroke="Black"
           StrokeThickness="1" StrokeDashArray="1 2" SnapsToDevicePixels="True">
          </Rectangle>
          <ContentPresenter Margin="{TemplateBinding Padding}"
           RecognizesAccessKey="True"></ContentPresenter>
        </Grid>
      </Border>
      <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
          <Setter TargetName="Border" Property="Background"
           Value="{StaticResource HighlightBackground}" />
        </Trigger>
        <Trigger Property="IsPressed" Value="True">
          <Setter TargetName="Border" Property="Background"
           Value="{StaticResource PressedBackground}" />
        </Trigger>
        <Trigger Property="IsKeyboardFocused" Value="True">
          <Setter TargetName="FocusCue" Property="Visibility"
            Value="Visible"></Setter>
        </Trigger>
        <Trigger Property="IsEnabled" Value="False">
          <Setter TargetName="Border" Property="Background"
           Value="{StaticResource DisabledBackground}"></Setter>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>

    <!-- The style that applies the button control template. -->
    <Style TargetType="{x:Type Button}">
        <Setter Property="Background"
                Value="{StaticResource DefaultBackground}"></Setter>
      <Setter Property="Control.Template"
       Value="{StaticResource GradientButtonTemplate}"></Setter>
    </Style>
  </ResourceDictionary>

在模板中使用模板绑定,在样式中设置属性,给background设置一个默认值。

当然控件本身通过模板绑定可以修改这个属性值。

 

模板之在使用模板绑定时,利用样式提供默认值

原文:https://www.cnblogs.com/yingzilovexiaoxiong/p/14369834.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!