zoukankan      html  css  js  c++  java
  • WPF模板

    模板能够更加灵活的控制控件的外观
    1. 示例:通过模板更改控件Button的外观
    效果:
    MainWindow 2020-04-19 17-54-41.mp4
    <Window x:Class="模板.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:模板"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.Resources>
                <ControlTemplate x:Key="ButtonTemplate">
                    <Grid Height="100" Width="100">
                        <Ellipse x:Name="outerCircle" Width="100" Height="100">
                            <Ellipse.Fill>
                                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                    <GradientStop Offset="0" Color="Blue"/>
                                    <GradientStop Offset="1" Color="Red"/>
                                </LinearGradientBrush>
                            </Ellipse.Fill>
                        </Ellipse>

                        <Ellipse Width="80" Height="80">
                            <Ellipse.Fill>
                                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                    <GradientStop Offset="0" Color="White"/>
                                    <GradientStop Offset="1" Color="Transparent"/>
                                </LinearGradientBrush>
                            </Ellipse.Fill>
                        </Ellipse>
                    </Grid>
                    <ControlTemplate.Triggers >
                        <Trigger Property="Button.IsMouseOver" Value="true">
                            <Setter TargetName="outerCircle" Property="Fill" Value="Orange"/>
                        </Trigger>

                        <Trigger Property="Button.IsPressed" Value="true">
                            <Setter Property="RenderTransform">
                                <Setter.Value>
                                    <ScaleTransform ScaleX="0.9" ScaleY="0.9"/>
                                </Setter.Value>
                            </Setter>
                            <Setter Property="RenderTransformOrigin" Value=".5,.5"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Grid.Resources>
            <Button Template="{StaticResource ButtonTemplate}"/>
        </Grid>
    </Window>
     
    2. 样式的触发器和模板触发器的区别:
    (1)样式的触发器无法应用于模板的某个子元素,而模板的触发器可以。样式中只能设置某个控件的某个属性,而且Setter的TargetName和Trigger的SourceName属性均用来指定模板中的某个子元素,该子元素必须有一个名字。
    (2)样式的触发器的优先级高于模板的触发器
    3. 样式和模板的混合使用
    (1)模板可以作为资源放在窗口或应用程序的资源标签中
    (2)模板可以嵌入样式中,能够实现模板的复用(模板中的某些属性可以在样式中更改)
      <Style x:Key="GreenButton" TargetType="Button">
                    <Setter Property="Template" Value="{StaticResource ButtonTemplate}"/>
                    <Setter Property="Background" Value="Green"/>
      </Style>
       <Style x:Key="RedButton" TargetType="Button">
                    <Setter Property="Template" Value="{StaticResource ButtonTemplate}"/>
                    <Setter Property="Background" Value="Red"/>
       </Style>
     
     
     

  • 相关阅读:
    DevExpress.XtraReports报表,动态设置报表布局
    使datagridview的cell只能输入整数的方法
    关于昨天我那个问题:“DEV的DATAVIEW,能不能自己动计算并显示行中某个单元格值是其它单元格值相乘后得来的??”
    给dataGridView 添加合计行的实现方法
    实现textBox只能输入数字的一种方法!
    C#2005如何读取XML文件中的数据库连接字符串??? (好像和2003不一样啊) 急,跪求!
    请教各位在C#中这样的数据显示方式是用Datagrid控件生成的吗??(行和列数固定,能够显示行标头)
    C#2005用XML来保存连接数据库的字符串(这样改变了服务器连接配制只需改一下这个文件就成了),琢磨了几天终于有解了,和大家分享一下,希望高手指点!
    请教方法和例子:VS2003的datagrid控件,如何实现用鼠标拖动的方法选中任意区域的多个单元格,然后进行统一编辑??
    C#2005如何读取XML文件中的数据库连接字符串??? (好像和2003不一样啊) 急,跪求!
  • 原文地址:https://www.cnblogs.com/shougoule/p/12734985.html
Copyright © 2011-2022 走看看