iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >c# WPF中CheckBox样式的使用方法
  • 557
分享到

c# WPF中CheckBox样式的使用方法

2023-06-07 14:06:04 557人浏览 安东尼
摘要

本篇内容主要讲解“C# WPF中CheckBox样式的使用方法 ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c# WPF中CheckBox样式的使用方法 ”吧!背景  很多时候我们使用WPF开

本篇内容主要讲解“C# WPF中CheckBox样式的使用方法 ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c# WPF中CheckBox样式的使用方法 ”吧!

背景

  很多时候我们使用WPF开发界面的时候经常会用到各种空间,很多时候我们需要去自定义控件的样式来替换默认的样式,今天通过两个方法来替换WPF中的CheckBox样式,透过这两个例子我们可以掌握基本的WPF样式的开发如何定义ControlTemplate以及使用附加属性来为我们的控件增加新的样式。

常规使用

  我们在使用CheckBox的时候,原始的样式有时不能满足我们的需求,这是我们就需要更改其模板,比如我们常用的一种,在播放器中“播放”、“暂停”按钮,其实这也是一种CheckBox,只不过我们只是修改了其相关的模板罢了,下面贴出相关代码: 

<CheckBox.Style>  <Style TargetType="{x:Type CheckBox}">    <Setter Property="Focusable" Value="False" />    <Setter Property="IsTabStop" Value="False" />    <!--把OverridesDefaultStyle设置为True,表示这个控件不使用当前Themes的任何属性。-->    <Setter Property="OverridesDefaultStyle" Value="True" />      <Style.Triggers>        <Trigger Property="IsChecked" Value="True">       <Setter Property="Template">          <Setter.Value>            <ControlTemplate TargetType="{x:Type CheckBox}">              <Grid Background="Transparent">                   <Image Source="/EarthSimulation;component/Images/按钮-播放.png"/>              </Grid>            </ControlTemplate>         </Setter.Value>      </Setter>      </Trigger>      <Trigger Property="IsChecked" Value="False">       <Setter Property="Template">         <Setter.Value>            <ControlTemplate TargetType="{x:Type CheckBox}">                <Grid Background="Transparent">                        <Image Source="/EarthSimulation;component/Images/按钮-暂停.png"/>                 </Grid>            </ControlTemplate>          </Setter.Value>        </Setter>        </Trigger>      </Style.Triggers>    </Style>  </CheckBox.Style></CheckBox>  

进阶用法

  上面的使用较为简单,下面我们通过一个更加复杂一些的例子来增加对自定义控件模板的理解,我们先来看看我们定义的样式。

<Style x:Key="CheckBoxStyle" TargetType="{x:Type CheckBox}">               <Setter Property="FocusVisualStyle" Value="{x:Null}"/>               <Setter Property="Background" Value="Transparent"/>               <Setter Property="BorderBrush" Value="Transparent"/>               <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>               <Setter Property="Template">                   <Setter.Value>                       <ControlTemplate TargetType="{x:Type CheckBox}">                           <Border x:Name="templateRoot" Background="{TemplateBinding Background}" >                               <Grid SnapsToDevicePixels="True">                                   <Grid.Resources>                                       <PathGeometry x:Key="geometryCheck" Figures="M540.5696 102.4c-225.83296 0-409.6 183.74656-409.6 409.6s183.76704 409.6 409.6 409.6c225.87392 0 409.6-183.74656 409.6-409.6S766.44352 102.4 540.5696 102.4zM721.16224 468.48l-175.37024 175.39072c-12.20608 12.1856-28.20096 18.28864-44.19584 18.28864-15.95392 0-31.96928-6.10304-44.15488-18.28864l-97.44384-97.44384c-24.39168-24.39168-24.39168-63.93856 0-88.33024 24.39168-24.41216 63.91808-24.41216 88.35072 0l53.248 53.248 131.23584-131.21536c24.35072-24.3712 63.95904-24.3712 88.33024 0C745.55392 404.52096 745.55392 444.08832 721.16224 468.48z"/>                                   </Grid.Resources>                                   <Grid.ColumnDefinitions>                                       <ColumnDefinition Width="20"/>                                       <ColumnDefinition Width="*"/>                                       <ColumnDefinition Width="30"/>                                   </Grid.ColumnDefinitions>                                    <Border>                                       <Path Width="18" Height="18" Stretch="UnifORM"                                             Data="{Binding (local_ctrl:GeometryAP.IconGeometry), RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type CheckBox}}}"                                             Fill="{Binding (local_ctrl:GeometryAP.IconFill), RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type CheckBox}}}"/>                                   </Border>                                   <ContentPresenter x:Name="contentPresenter" Grid.Column="1" Focusable="False"                                                 Margin="{TemplateBinding Padding}"                                                 RecognizesAccessKey="True"                                                 SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"                                                 HorizontalAlignment="Left"                                                 VerticalAlignment="Center"/>                                    <Border x:Name="checkBoxBorder"                                       Grid.Column="2"                                       Margin="1"                                       BorderBrush="Transparent"                                       BorderThickness="1"                                       Background="Transparent"                                       HorizontalAlignment="Left"                                       VerticalAlignment="Center">                                        <Grid x:Name="markGrid">                                           <Path x:Name="optionMark" Width="20" Height="20"                                                 Stretch="Uniform"                                                 Data="{StaticResource geometryCheck}"                                                 Fill="LightSeaGreen" Margin="1" Opacity="0"/>                                       </Grid>                                   </Border>                               </Grid>                           </Border>                           <ControlTemplate.Triggers>                               <Trigger Property="HasContent" Value="true">                                   <Setter Property="Padding" Value="4,-1,0,0"/>                               </Trigger>                               <Trigger Property="IsMouseOver" Value="true">                                   <Setter Property="Cursor" Value="Hand"/>                                   <Setter Property="Background" Value="#22222222"/>                               </Trigger>                               <Trigger Property="IsEnabled" Value="false">                                   <Setter Property="Opacity" Value=".3"/>                               </Trigger>                               <Trigger Property="IsPressed" Value="true">                                   <Setter Property="Cursor" Value="Hand"/>                                   <Setter Property="Background" Value="#22333333"/>                               </Trigger>                               <Trigger Property="IsChecked" Value="true">                                   <Setter Property="Opacity" TargetName="optionMark" Value="1"/>                               </Trigger>                                                          </ControlTemplate.Triggers>                       </ControlTemplate>                   </Setter.Value>               </Setter>           </Style>

  后面我们再来看看,我们使用CheckBox的地方。

<CheckBox Grid.Row="1" Grid.Column="1"                                      IsChecked="{Binding VM.IsHorizontal,ElementName=_this}" Content="Horizontal"                                      Style="{StaticResource CheckBoxStyle}"                                      local_ctrl:GeometryAP.IconGeometry="{StaticResource geometryDirection}"                                      local_ctrl:GeometryAP.IconFill="LightSeaGreen"/>

  这个地方我们为CheckBox增加了两个附加属性IconGeometry、IconFill这样我们就能够将这两个附加属性绑定到CheckBox样式中的Path里面的Data和Fill依赖项属性上面,通过上面的过程我们就能够定义各种各样的CheckBox样式了,下面我们看看我们定义的这两个附加属性具体的代码。

public class GeometryAP : DependencyObject{    public static PathGeometry GetIconGeometry(DependencyObject obj)    {        return (PathGeometry)obj.GetValue(IconGeometryProperty);    }    public static void SetIconGeometry(DependencyObject obj, PathGeometry value)    {        obj.SetValue(IconGeometryProperty, value);    }     public static Brush GetIconFill(DependencyObject obj)    {        return (Brush)obj.GetValue(IconFillProperty);    }    public static void SetIconFill(DependencyObject obj, Brush brush)    {        obj.SetValue(IconFillProperty, brush);    }     public static readonly DependencyProperty IconGeometryProperty = DependencyProperty.ReGISterAttached("IconGeometry", typeof(PathGeometry), typeof(GeometryAP));    public static readonly DependencyProperty IconFillProperty = DependencyProperty.RegisterAttached("IconFill", typeof(Brush), typeof(GeometryAP), new PropertyMetadata(Brushes.Transparent));}

  样式欣赏

c# WPF中CheckBox样式的使用方法

到此,相信大家对“c# WPF中CheckBox样式的使用方法 ”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: c# WPF中CheckBox样式的使用方法

本文链接: https://www.lsjlt.com/news/249558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c# WPF中CheckBox样式的使用方法
    本篇内容主要讲解“c# WPF中CheckBox样式的使用方法 ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c# WPF中CheckBox样式的使用方法 ”吧!背景  很多时候我们使用WPF开...
    99+
    2023-06-07
  • CSS中如何使用Checkbox复选框样式
    这期内容当中小编将会给大家带来有关CSS中如何使用Checkbox复选框样式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,需要添加一段CSS隐藏所有的Checkbo...
    99+
    2024-04-02
  • WPF TextBox使用密码样式
    WPF TextBox可以使用密码样式来隐藏用户输入的文本。要使用密码样式,可以通过设置TextBox的属性为Password,并设...
    99+
    2023-09-28
    WPF
  • c# wpf如何使用Blend工具绘制Control样式
    目录实现效果实现方式实现步骤Blend绘制Path绘制Path绘制直线绘制曲线改变曲线形状移除Path上的线段移除Path上的点Path添加点绘制自由的形状本文通过设计一个Radio...
    99+
    2024-04-02
  • C#WPF调用QT窗口的方法
    WPF 程序内嵌 QT 窗体 1、目标:将QT控件(Qwiget)(或则基于QWiget的控件)(或则任何第三方C++控件)封装为WPF可调用的用户控件。简单来说就是WPF程序调用Q...
    99+
    2023-02-09
    C# WPF调用QT窗口 C# WPF调用QT
  • c# WPF中的TreeView使用详解
    目录前台后台在wpf中实现treeview的功能,可能看到很多分享的都是简单的绑定,仅此记录自己完成的功能。 前台 <TreeView x:Name="chapterTre...
    99+
    2024-04-02
  • Vue中使用 class 类样式的方法详情
    目录1. 布尔值2.表达式3.多类封装4.可以直接在 v-bind:中使用数组形式使用class类在vue中为我们提供了 几种方式来使用class类的样式 1. 布尔值 我们先正常在...
    99+
    2024-04-02
  • WPF中ImageBrush常用方式介绍
    WPF的ImageBrush是一个比较常见也比较复杂的笔刷,它继承自图块笔刷(TileBrush)。使用图块画笔绘制区域涉及以下三个组成部分:内容、基本图块和输出区域。基本输出过程如...
    99+
    2024-04-02
  • python wpf使用的方法是什么
    Python没有官方支持的WPF库,但可以通过使用IronPython来使用WPF。IronPython是Python的一种实现,它...
    99+
    2023-10-08
    python wpf
  • C++ STL中常见的算法使用方式
    目录什么是STL?0. < algorithm> 是什么:1. Non-modifying sequence operations:1.1 find:(Find valu...
    99+
    2024-04-02
  • C# wpf Bitmap转换成WriteableBitmap的方法
    目录前言一、WriteableBitmap是什么?二、如何实现1.创建WriteableBitmap2.写入数据三、完整代码四、使用示例1.直接转换2.复用写入总结前言 在wpf中我...
    99+
    2022-11-13
    C# Bitmap转换成WriteableBitmap C# Bitmap WriteableBitmap
  • 浅析Angular项目中使用 SASS 样式的方法
    SASS 提供了两种编写的语法,一种是 .scss 为后缀,另一种是 .sass 为后缀。.scss 为后缀,语法用 {} 修饰.sass 为后缀,语法是缩紧方式推荐使用 .scss项目集成angular 项目使用脚手架生成,在添加样式这一...
    99+
    2022-11-22
    Angular
  • Android中CheckBox复选框控件使用方法详解
    CheckBox复选框控件使用方法,具体内容如下一、简介类结构图二、CheckBox复选框控件使用方法这里是使用java代码在LinearLayout里面添加控件新建LinearLayout布局建立CheckBox的XML的Layout文件...
    99+
    2023-05-30
    checkbox 复选框 roi
  • c#中查询表达式GroupBy的使用方法
    说明: c#中实现IEnumerable<T>接口的类提供了很多扩展方法,其中Select,Where等为最常见的,且几乎和Sql语法类似比较好理解,基本满足了...
    99+
    2024-04-02
  • WPF中使用WebView2控件的方法及常见问题
    目录WebView2简介概述优势支持的运行时平台进程模型基本使用安装WebView2运行时安装WebView2Sdk打开一个网页导航事件打开一个网页的过程更改url的过程空url进阶...
    99+
    2023-02-09
    wpf webbrowser控件 wpf使用webview2控件 Wpf控件
  • Dreamweaver中CSS样式表的应用方法
    本篇内容介绍了“Dreamweaver中CSS样式表的应用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、 去除超级链接的下划线以及在...
    99+
    2023-06-08
  • WPF引用MVVM框架与使用方法
    1.NuGet引用MVVM框架包 引入该框架包之后, 默认会在目录下创建ViewModel层的示例代码 2.第二步, 通过在MainViewModel中创建一些业务代码, 将其与...
    99+
    2024-04-02
  • c++中的bind使用方法
    除了容器有适配器之外,其实函数也提供了适配器,适配器的特点就是将一个类型改装成为拥有子集功能的新的类型。其中函数的适配器典型的就是通过std::bind来实现。 std::bind函...
    99+
    2024-04-02
  • C++中正则表达式的使用方法详解
    目录介绍1. C++ 中的正则表达式 (Regex)1.1 范围规范1.2 重复模式2. C++正则表达式的例子3. C++正则表达式中使用的函数模板3.1 regex_match(...
    99+
    2024-04-02
  • C#中 CheckBox控件的作用是什么
    C#中 CheckBox控件的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C# CheckBox控件的用途:它是用于接受来自用户的二状态或三状态响应。C# Ch...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作