首页 > 其他分享 >WPF知识点备忘录——控件模板

WPF知识点备忘录——控件模板

时间:2023-02-26 18:55:57浏览次数:40  
标签:知识点 控件 ... 备忘录 WPF 模板

模板

    <Application.Resources>
        <ResourceDictionary>
            <!--将画刷等从模板拆分出来,方便重用-->
            <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>
            <!--触发器都保留在模板中-->
            <ControlTemplate x:Key="GradientButtonTemplate" TargetType="{x:Type Button}">
                <Border Name="Border" BorderBrush="{StaticResource Border}" BorderThickness="2"
                        CornerRadius="2" Background="{StaticResource DefaultBackGround}"
                        TextBlock.Foreground="White">
                    <Grid>
                        <Rectangle Name="FocusCue" Visibility="Hidden" Stroke="Black"
                                   StrokeThickness="1" StrokeDashArray="1 2" SnapsToDevicePixels="True"/>
                        <ContentPresenter Margin="{TemplateBinding Padding}" RecognizesAccessKey="True"/>
                    </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="FocusCue" Property="Visibility" Value="Visible"/>
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackGround}"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </ResourceDictionary>
    </Application.Resources>

样式的方式使用模板

  将模板中的颜色、画刷改成模板绑定的方式,在样式中给出,即可实现不同的外观需要

        <Style x:Key="CustomButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="Control.Template" Value="{StaticResource CustomButtonTemplate}"/>
            <Setter Property="Background" Value="{StaticResource HighLightBackground}"/>
            <Style.Triggers>
                <Trigger>...</Trigger>
                ...
            </Style.Triggers>
        </Style>

 

标签:知识点,控件,...,备忘录,WPF,模板
From: https://www.cnblogs.com/chixiner/p/17157301.html

相关文章

  • 免费领取2023年上半年信息系统项目管理师重要知识点10G资料包
    课课家软考学院为2023年上半年信息系统项目管理师考生整理了2023年上半年信息系统项目管理师重要知识点10G学习资料的内容,希望能帮助考生掌握信息系统项目管理师的重要......
  • Python3中zip()函数知识点总结
    1.引言在本文中,我将带领大家深入了解​​Python​​中的​​zip()​​函数,使用它可以提升大家的工作效率。闲话少说,我们直接开始吧!2.基础知识首先,我们来介绍一些基础知识......
  • 有关Unity中Text控件文本不能换行或换行无效的解决方案
    解决方案如下: 这里简单说明一下:@标识符用于禁止把后面的“\n”转化掉,也就是使用完“\n”的转移效果就会保留,自然就能换行了。@似乎只能加在""之......
  • WPF MVVM框架------ Prism中的对话服务(IDialogService)
    在wpf中,我们平时使用对话框最常用的一种方式就是新建一个窗口,然后new出来后再调用ShowDialog()方法显示弹窗,prism中为我们提供了对话服务接口,我们可以通过这个服务向窗体......
  • 有关图片的知识点
    常见的图片格式类型SVG(ScalableVectorGraphics):矢量图形格式,可以无限放大而不失真,适合于网页图形和动画等应用。JPEG(JointPhotographicExpertsGroup):用于存储......
  • C#/.NET知识点总结【泛型】
     泛型极大提高代码可用性,可以重复使用对象,定义一个反省对象后,我们可以赋值成string类型,int类型,类型是安全的性能也有提高  https://www.ktanx.com/blog/p/665 ......
  • 297个机器学习彩图知识点(14)
    导读本系列将持续更新20个机器学习的知识点,欢迎关注。1.独立同分布2.KNN填补缺失值3.填补缺失值4.拐点5.参数初始化6.初始权重7.工具变量8.交叉......
  • java 知识点
    defaultswitch(num):case1:语句;break;case2:语句;break;case3:语句;break;default:语句;break;Random随机数Randomr=newRandom();r.nextInt(9......
  • 解决在Android studio的Button控件下background背景设置不起作用的问题
    Button控件默认的背景是深紫色的,有时候会看不清按钮上的文本,显得很不方便,想要修改背景色所以添加了background字段,但是又不起作用!!!1.找到values文件夹下面的themes文件夹,打......
  • WPF ItemsControl Command 绑定操作
    视图模型:usingSystem.Collections.ObjectModel;usingSystem.Diagnostics;usingSystem.Windows.Input;usingCommunityToolkit.Mvvm.ComponentModel;usingCommuni......