zoukankan      html  css  js  c++  java
  • 模板之在使用模板绑定时,利用样式提供默认值

    <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设置一个默认值。

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

  • 相关阅读:
    修改Windows和linux系统时间
    个人随笔、收藏——(包括技术、设计思想等)
    给vue项目添加ESLint
    React文档(七)处理事件
    React文档(六)state和生命周期
    React文档(五)组件和props
    React文档(四)渲染元素
    React文档(三)介绍JSX
    React文档(二)Hello World
    React文档(一)安装
  • 原文地址:https://www.cnblogs.com/yingzilovexiaoxiong/p/14369834.html
Copyright © 2011-2022 走看看