WPF 控件 (四、单选按钮)

这篇具有很好参考价值的文章主要介绍了WPF 控件 (四、单选按钮)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、选中显示下划线

1. style

 <Style x:Key="UnderlineRadioButton" TargetType="RadioButton">
        <Setter Property="Width" Value="50"/>
        <Setter Property="Height" Value="30"/>
        <Setter Property="Cursor" Value="Hand"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="RadioButton">
                    <Border Background="Transparent" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
                        <StackPanel>
                            <Border Background="{TemplateBinding Background}" CornerRadius="10" Width="{TemplateBinding Width}" Height="20">
                                <ContentPresenter x:Name="contentPresenter" RecognizesAccessKey="True" VerticalAlignment="Center" HorizontalAlignment="Center" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                            </Border>
                            <Line X1="0" Y1="0" X2="{TemplateBinding Width}" Y2="0" Margin="0,5" x:Name="line1" Stroke="{TemplateBinding Foreground}" StrokeThickness="1"/>
                        </StackPanel>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter TargetName="line1" Property="Visibility" Value="Visible"/>
                        </Trigger>
                        <Trigger Property="IsChecked" Value="False">
                            <Setter TargetName="line1" Property="Visibility" Value="Collapsed"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsChecked" Value="True">
                <Setter Property="Opacity" Value="0.8"/>
            </Trigger>
        </Style.Triggers>
    </Style>

2.demo

 <WrapPanel Margin="0,10">
    <RadioButton Content="rb1"  Style="{StaticResource UnderlineRadioButton}"  Background="Black" Foreground="Blue"/>
    <RadioButton Content="rb2"  Style="{StaticResource UnderlineRadioButton}"  Background="Black" Foreground="Red"/>
    <RadioButton Content="rb3"  Style="{StaticResource UnderlineRadioButton}"  Background="Black" Foreground="Green"/>
    <RadioButton Content="rb4"  Style="{StaticResource UnderlineRadioButton}"  Background="Black" Foreground="Yellow"/>
    <RadioButton Content="rb5"  Style="{StaticResource UnderlineRadioButton}"  Background="Black" Foreground="Purple"/>
</WrapPanel>

3.效果

wpf 单选框,wpf,ui,c#
wpf 单选框,wpf,ui,c#
wpf 单选框,wpf,ui,c#

二、带图标的单选按钮

1. RadioButton2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows;

namespace lyrics.ui.Controls.ButtonCustom
{
    internal class RadioButton2 : RadioButton
    {
        static RadioButton2()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(RadioButton2), new FrameworkPropertyMetadata(typeof(RadioButton2)));
        }

        #region Icon 
        public static readonly DependencyProperty IconProperty =
            DependencyProperty.Register("Icon", typeof(Geometry), typeof(RadioButton2), new PropertyMetadata(default(Geometry)));

        public Geometry Icon
        {
            get => (Geometry)GetValue(IconProperty);
            set => SetValue(IconProperty, value);
        }
        public static readonly DependencyProperty Icon2Property =
    DependencyProperty.Register("Icon2", typeof(Geometry), typeof(RadioButton2), new PropertyMetadata(default(Geometry)));

        public Geometry Icon2
        {
            get => (Geometry)GetValue(Icon2Property);
            set => SetValue(Icon2Property, value);
        }
        public static readonly DependencyProperty IconWidthProperty =
    DependencyProperty.Register("IconWidth", typeof(double), typeof(RadioButton2), new PropertyMetadata(default(double)));

        public double IconWidth
        {
            get => (double)GetValue(IconWidthProperty);
            set => SetValue(IconWidthProperty, value);
        }

        public static readonly DependencyProperty IconHeightProperty =
DependencyProperty.Register("IconHeight", typeof(double), typeof(RadioButton2), new PropertyMetadata(default(double)));

        public double IconHeight
        {
            get => (double)GetValue(IconHeightProperty);
            set => SetValue(IconHeightProperty, value);
        }
        #endregion
    }
}

2. Style

  <Style x:Key="IconRadioButton" TargetType="cbtn:RadioButton2">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="cbtn:RadioButton2">
                    <Border Background="{TemplateBinding Background}" CornerRadius="10">
                        <StackPanel Orientation="Horizontal">
                            <Path x:Name="icon1" Data="{TemplateBinding Icon}" Width="{TemplateBinding IconWidth}" Height="{TemplateBinding IconHeight}" Fill="{TemplateBinding Foreground}" Stroke="{TemplateBinding Foreground}" StrokeThickness="1" SnapsToDevicePixels="True" Stretch="Uniform"/>
                            <Path x:Name="icon2" Data="{TemplateBinding Icon2}" Width="{TemplateBinding IconWidth}" Height="{TemplateBinding IconHeight}" Fill="{TemplateBinding Foreground}"  Stroke="{TemplateBinding Foreground}" StrokeThickness="1" SnapsToDevicePixels="True" Stretch="Uniform"/>
                            <TextBlock x:Name="tb" Text="{TemplateBinding Name}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" VerticalAlignment="Center"/>
                            <ContentPresenter x:Name="contentPresenter" RecognizesAccessKey="True" VerticalAlignment="Center" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                        </StackPanel>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter TargetName="icon1" Property="Visibility" Value="Collapsed"/>
                            <Setter TargetName="icon2" Property="Visibility" Value="Visible"/>
                            <Setter TargetName="tb" Property="Visibility" Value="Collapsed"/>
                            <Setter TargetName="contentPresenter" Property="Visibility" Value="Visible"/>
                        </Trigger>
                        <Trigger Property="IsChecked" Value="False">
                            <Setter TargetName="icon1" Property="Visibility" Value="Visible"/>
                            <Setter TargetName="icon2" Property="Visibility" Value="Collapsed"/>
                            <Setter TargetName="tb" Property="Visibility" Value="Visible"/>
                            <Setter TargetName="contentPresenter" Property="Visibility" Value="Collapsed"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsChecked" Value="True">
                <Setter Property="Opacity" Value="0.4"/>
            </Trigger>
        </Style.Triggers>
    </Style>

3. Demo

  <cbtn:RadioButton2 Content="rb1选中" x:Name="rb1未选中" Width="80" Height="30" Background="Black" Foreground="White" Style="{StaticResource IconRadioButton}"
                                     Icon="{StaticResource UpGeometry}" Icon2="{StaticResource DownGeometry}" IconWidth="20" IconHeight="20"/>
                    <cbtn:RadioButton2 Content="rb2选中" x:Name="rb2未选中" Width="80" Height="30" Background="Black" Foreground="White" Style="{StaticResource IconRadioButton}"
                                     Icon="{StaticResource UpGeometry}" Icon2="{StaticResource DownGeometry}" IconWidth="20" IconHeight="20"/>
                    <cbtn:RadioButton2 Content="rb3选中" x:Name="rb3未选中" Width="80" Height="30" Background="Black" Foreground="White" Style="{StaticResource IconRadioButton}"
                                     Icon="{StaticResource UpGeometry}" Icon2="{StaticResource DownGeometry}" IconWidth="20" IconHeight="20"/>

4.效果

wpf 单选框,wpf,ui,c#
wpf 单选框,wpf,ui,c#
wpf 单选框,wpf,ui,c#
wpf 单选框,wpf,ui,c#文章来源地址https://www.toymoban.com/news/detail-829478.html

到了这里,关于WPF 控件 (四、单选按钮)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF必须掌握的技能之自定义控件——实战:自制上传文件显示进度按钮

    自定义控件在WPF开发中是很常见的,有时候某些控件需要契合业务或者美化统一样式,这时候就需要对控件做出一些改造。 目录 按钮设置圆角 按钮上传文件相关定义 测试代码 话不多说直接看效果 默认效果: 上传效果: 按钮设置圆角 因为按钮本身没有 CornerRadius 属性,所以只

    2024年02月08日
    浏览(70)
  • WPF 使用MaterialDesign(开源UI控件库)

             MaterialDesign for WPF 是针对WPF设计的 开源UI框架 ,使用该UI框架可以很方便使用各种封装好的绚丽的控件,方便快速设计UI界面。 官网链接:http://materialdesigninxaml.net/ MaterialDesign Github源码链接:https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit 本篇实例链接:htt

    2024年02月14日
    浏览(36)
  • Android Studio:单选按钮和复选框

    安卓应用中,常常需要用户从若干选项中进行选择,有时要求只能选择一个,那么就要使用单选按钮(RadioButton),有时要求用户可以选择多个,那么就要使用复选框(CheckBox)。 1、继承关系图 RadioGroup是LinearLayout的子类 2、常用属性 3、设置事件监听器 4、注意事项 导入and

    2024年02月06日
    浏览(48)
  • c#WPF 自定义UI控件学习,vb.net界面UI美化

    最近项目中运用到了WPF处理三维软件,在C/S结构中WPF做UI还是有很多优越性,简单的学了一点WPF知识,成功的完成项目目标。项目过度阶段对于WPF的一些基本特点有了进一步了解 。至此花费一点时间研究研究WPF控件。 为以后的项目开发中提供一些可观的资源也是不错的。 目

    2024年02月20日
    浏览(49)
  • 基于Material Design风格开源、易用、强大的WPF UI控件库

    今天大姚给大家分享一款基于Material Design风格开源、免费(MIT License)、易于使用、强大的WPF UI控件库: MaterialDesignInXamlToolkit 。 MaterialDesignInXamlToolkit 是一个开源、易于使用、强大的 WPF UI 控件库,旨在帮助开发人员在 C# 和 VB.Net 中实现 Google 的 Material Design 风格的用户界面。

    2024年04月23日
    浏览(56)
  • 基于Visual Studio扩展的WPF工业组态UI控件-ConPipe

    本文的组态控件是由《轻量而敏捷的工业组态软件UI设计工具-ConPipe Studio 2022》 和 《轻量而敏捷的工业组态软件UI设计工具-机械组态篇》两篇文章中的方案全新升级而来的,升级控件依然继承了“程序员自己能干的事情绝不麻烦美工”的思想。最大的不同就是由ConPipe Studio工

    2023年04月16日
    浏览(49)
  • Android 之 RadioButton (单选按钮)& Checkbox (复选框)

    本节给大家带来的是Andoird基本UI控件中的RadioButton和Checkbox; 先说下本节要讲解的内容是:RadioButton和Checkbox的 1.基本用法 2.事件处理; 3.自定义点击效果; 4.改变文字与选择框的相对位置; 5.修改文字与选择框的距离 其实这两个控件有很多地方都是类似的,除了单选和多选,

    2024年02月10日
    浏览(53)
  • 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(二)

    DevExpress WPF Diagram(流程图)控件帮助用户完美复制Microsoft Visio UI,并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。 在上文中(点击这里回顾),我们为大家介绍了DevExpress WPF Diagram(流程图)组件性能优异切信息丰富的流程图功能、轻松地

    2024年02月05日
    浏览(52)
  • 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)

    DevExpress WPF Diagram(流程图)控件帮助用户完美复制Microsoft Visio UI,并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。 P.S :DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有

    2024年02月04日
    浏览(52)
  • WPF-UI HandyControl 控件简单实战+IconPacks矢量图导入

    因为HandyControl 的功能非常的丰富,我打算完整的了解一下HandyControl 整个控件的基本使用,而且我的网易云WPF项目也打算用UserControl 进行重构 WPF-UI HandyControl 简单介绍 HandyControl Visual Studio 插件 HandyControl Github地址 HandyControl 官方中文文档 HandyControl 实战Gitee仓库 我们下载了Han

    2024年02月02日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包