深入了解WPF控件:常用属性与用法(七)

news2024/11/23 21:58:55

掌握WPF控件:熟练常用属性(七)

Menu

  • 用于为应用程序指定命令或选项的项列表。它允许用户通过选择不同的菜单项来执行不同的命令或操作。 每个 Menu 可以包含多个 MenuItem 控件。 每个 MenuItem 都可以调用命令或调用 Click 事件处理程序。 MenuItem 还可以将多个 MenuItem 元素作为子元素,形成子菜单。
常用属性描述
IsMainMenu用于获取或设置一个值,该值指示此菜单是否接收主菜单激活通知。默认为false。当值为true时,按下Alt或F10键时菜单就会获得焦点。
HeaderTemplate用于自定义MenuItem的头部显示内容的模板。
IsCheckable用于获取或设置是否可以勾选Menu项。
IsChecked获取或设置一个值,该值指示是否选中 MenuItem。
IsSubmenuOpen用于获取或设置一个值,该值指示是否打开 MenuItem 的子菜单。为true打开 MenuItem 的子菜单
InputGestureText用于设置描述输入手势的文本,该手势将调用绑定到指定项的命令。如:“复制”命令的 Ctrl+C。默认值为空。
Command用于获取或设置与菜单项关联的命令。 默认值为 null。
IsCheckable获取一个值,该值指示是否可以检查 MenuItem。默认为false。
Icon用于获取或设置在 MenuItem 中的图标。
Visibility用于获取或设置是否应显示菜单,默认为Visible。
  • 下面来写个例子
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>

    <!--设置菜单Background为白色,并且设置子IsMainMenu为true,按下Alt或F10键时菜单就会获得焦点-->
    <Menu  Margin="10,10,5,5" Grid.Row="0" Background ="White"  IsMainMenu="True" HorizontalAlignment="Center" VerticalAlignment="Top" >
        <MenuItem Header="我是绑定命令项目" >
            
            <!--使用自定义模板定Header 使得图标和文字对齐-->
            <MenuItem.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <!--<Image Source="./1.png" Width="16" Height="16" VerticalAlignment="Center"/>-->
                        <TextBlock Text="我是一个命令菜单" Margin="0,0,0,0" VerticalAlignment="Center"/>
                    </StackPanel>
                </DataTemplate>
            </MenuItem.HeaderTemplate>
             
            <!--设置菜单标题-->
            <MenuItem.Icon>
                <Image Width="16" Height="16" VerticalAlignment="Center" Source="./1.png"/>
            </MenuItem.Icon>
            <!--这里添加了三个子菜单项,分别对应于内置的Copy、Cut和Paste命令。这些命令将自动与适当的控件关联,如果选择了一些文本,则剪切和复制命令将变为可用状态。-->
            <MenuItem Command="ApplicationCommands.Copy"/>
            <MenuItem Command="ApplicationCommands.Cut"/>
            <MenuItem Command="ApplicationCommands.Paste"/>
        </MenuItem>
        <MenuItem Header="我是可以字体功能菜单">
            <!--这里设置检查菜单项IsCheckable为true ,设置能勾选 以及相关点击事件-->
            <MenuItem Header="设置粗体" IsCheckable="True" Checked="Bold_Checked" Unchecked="Bold_Unchecked"/>
            <MenuItem Header="设置斜体" IsCheckable="True" Checked="Italic_Checked" Unchecked="Italic_Unchecked"/>
            <Separator/>
            <MenuItem Header="放大字体大小" Click="IncreaseFont_Click"/>
            <MenuItem Header="缩小字体大小" Click="DecreaseFont_Click"/>
        </MenuItem>
    </Menu>
    <TextBox Name="myTextBox" TextWrapping="Wrap" HorizontalAlignment="Center" Margin="2"  Grid.Row="1"  Width="300">
       您可以选择字体菜单下的选项,能看到我的变化
    </TextBox>
</Grid>
using System.Windows;

namespace WpfCommonControls
{
    /// <summary>
    /// Menu.xaml 的交互逻辑
    /// </summary>
    public partial class Menu : Window
    {
        public Menu()
        {
            InitializeComponent();
        }

        private void Bold_Checked(object sender, RoutedEventArgs e)
        {
            // 勾选设置粗体
            myTextBox.FontWeight = FontWeights.Bold;
        }

        private void Bold_Unchecked(object sender, RoutedEventArgs e)
        {
            // 取消勾选取消粗体
            myTextBox.FontWeight = FontWeights.Normal;
        }

        private void Italic_Checked(object sender, RoutedEventArgs e)
        {
            // 勾选设置斜体
            myTextBox.FontStyle = FontStyles.Italic;
        }

        private void Italic_Unchecked(object sender, RoutedEventArgs e)
        {
            // 取消勾选取消斜体
            myTextBox.FontStyle = FontStyles.Normal;
        }

        private void IncreaseFont_Click(object sender, RoutedEventArgs e)
        {
            // 放大字体
            if (myTextBox.FontSize < 18)
            {
                myTextBox.FontSize += 2;
            }
        }

        private void DecreaseFont_Click(object sender, RoutedEventArgs e)
        {
            // 缩小字体
            if (myTextBox.FontSize > 10)
            {
                myTextBox.FontSize -= 2;
            }
        }

    }
}

Menu

PasswordBox

  • 提供了一个安全的方式来获取密码输入,它通过在输入时显示遮罩字符来隐藏用户输入的实际内容。这有助于保护密码不被窥视。PasswordBox控件还提供了与密码相关的属性和事件,以便于在应用程序中实现密码验证和安全处理。
常用属性描述
CaretBrush用于获取或设置用于指定密码框插入符号颜色的画笔。如设置 CaretBrush="Red"表示插入符号(光标)将显示为红色。
IsSelectionActive用于获取指示 PasswordBox 是否具有焦点和选择文本的值。默认为false。
MaxLength用于获取或设置此 PasswordBox 要处理的密码的最大长度。
Password用于获取或设置 PasswordBox 密码字符串。
PasswordChar用于获取或设置 PasswordBox 的掩码字符。在 PasswordBox 中输入文本时回显的掩码字符。默认值为项目符号字符 (●)。
SecurePassword用于获取 PasswordBox 当前以 SecureString 形式保存的密码。获取 Password 属性值时,将密码公开为内存中的纯文本。若要避免这种潜在的安全风险,请使用 SecurePassword 属性以 SecureString 形式获取密码。
SelectionBrush用于获取或设置突出显示所选文本的画笔。如:选择的字体颜色。
SelectionOpacity用于获取或设置 SelectionBrush 的不透明度。默认值为 0.4。
SelectionTextBrush用于获取或设置一个值,该值定义用于 PasswordBox 控件中所选文本的画笔。
  • 下面来写个例子
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="40"></RowDefinition>
        <RowDefinition Height="40"></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>


    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Grid.Row="0" Margin="20,10,20,0">
        <TextBlock Text="我是默认的PasswordBox:" FontSize="16" Margin="0,0,0,0" VerticalAlignment="Center"/>
        <!--设置默认的密码框,设置Password默认密码值-->
        <PasswordBox Margin="10,0,0,0"  Padding="5"  IsInactiveSelectionHighlightEnabled="True"  Password="1234567890" VerticalAlignment="Center" Width="250"/>
    </StackPanel>
    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Grid.Row="1"  Margin="20,10,20,0">
        <TextBlock Text="我有设置相关属性值:"  FontSize="16" Margin="0,0,0,0" VerticalAlignment="Center"/>
        <!--设置选中画笔SelectionBrush为绿色,选中透明度SelectionOpacity为0.5 设置字体颜色为红色 设置密码字符颜色为红色CaretBrush-->
        <!--设置 CaretBrush="Red"表示插入符号(光标)将显示为红色-->
        <!--设置PasswordChar为*-->
        <!--设置选中字体颜色SelectionTextBrush为橘色-->
        <PasswordBox x:Name="myPasswordBox" Margin="10,0,0,0"  Padding="5"   SelectionBrush="Green"  SelectionTextBrush="Orange"  SelectionOpacity="0.5" Foreground="Blue" CaretBrush="Red" Width="280" PasswordChar="*"/>
    </StackPanel>

    <StackPanel Orientation="Vertical" VerticalAlignment="Center" Grid.Row="2"  Margin="20,10,20,0">
        <!--添加一个按钮,点击查看SecurePassword密码长度-->
        <Button Content="获取SecurePassword长度" Background="Blue" Foreground="White" Height="50" Width="250" FontSize="16" Padding="10,0" Click="Button_Click"></Button>

        <Label x:Name="myLabel" FontSize="16" HorizontalAlignment="Center" Margin="0,20,0,0"></Label>
    </StackPanel>

</Grid>
using System.Security;
using System.Windows;

namespace WpfCommonControls
{
    /// <summary>
    /// PasswordBox.xaml 的交互逻辑
    /// </summary>
    public partial class PasswordBox : Window
    {
        public PasswordBox()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // 点击获取SecurePassword
            SecureString securePassword = myPasswordBox.SecurePassword;
            myLabel.Content = $"获取到密码SecurePassword长度为:{securePassword.Length}";
        }
    }
}

PasswordBox

公众号“点滴分享技术猿

关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1406076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5G-A:“繁花”盛开在2024

2019年&#xff0c;我国正式发牌5G&#xff0c;开启5G商用新时代。通信技术十年一代&#xff0c;五年过去了&#xff0c;5G是否要进入“半代更迭”阶段&#xff1f; 2024年被视为5G-A商用元年&#xff0c;是5G走向6G的关键一跃。5G-A以R18为演进起点&#xff0c;在连接速率、网…

机械臂雅可比矩阵的矢量积理解和matlab实现

雅可比矩阵的第Ji列&#xff1a; 关于一些基本概念可以参考博客&#xff0c;部分细节如下&#xff1a; 每个移动关节&#xff0c;Ji可以这样计算&#xff1a; 每个旋转关节&#xff0c;Ji这样计算&#xff1a; 有时候要求按照末端执行器坐标系{n}来执行一些位移旋转之类的…

[Linux]HTTP状态响应码列举

1xx&#xff1a;信息响应类&#xff0c;表示接收到请求并且继续处理 2xx&#xff1a;处理成功响应类&#xff0c;表示动作被成功接收、理解和接受 3xx&#xff1a;重定向响应类&#xff0c;为了完成指定的动作&#xff0c;必须接受进一步处理 4xx&#xff1a;客户端错误&#x…

什么是线段树?

线段树是用于储存区间信息的数据结构。 线段树将区间划分为左右子区间进行递归求解&#xff0c;便形成了树形结构。并通过合并两区间信息从而取得任意区间信息 例如对于数组a{10, 11, 12, 13, 14}&#xff0c;那么就可以构建以下线段树 构建 以数组作为线段树的基本结构&…

残差连接是什么意思

残差连接是深度神经网络中一种用于缓解梯度消失问题的技术。它的核心思想是通过将网络的输入直接传递到网络的输出&#xff0c;从而构建了一条直达路径&#xff0c;使得梯度更容易通过整个网络传播。这有助于在训练深层网络时避免梯度消失或梯度爆炸的问题。 在残差连接中&…

linux|操作系统|centos7物理机安装网卡驱动8188gu(内核升级,firmware固件,USB设备管理,module管理)

前言&#xff1a; 目前服务器领域centos7基本是主流的操作系统&#xff0c;而linux相对于Windows来说&#xff0c;软硬件方面的支持是差很多的&#xff0c;在硬件方面来说&#xff0c;以一个免驱的网卡为例&#xff0c;window xp可能不会自动识别到&#xff0c;但Windows10基本…

数据库中的经纬度数据如何在QGIS中显示

思路&#xff1a;必须先将经纬度数据转换成POINT&#xff0c;MULTILINESTRING等格式才能在QGIS中展示 步骤 1、首先在postgresql数据中建一张包括经纬度数据的表 **注意&#xff1a;**如果是新建数据库&#xff0c;一定要执行如下代码&#xff0c;否则后面的函数ST_GeomFrom…

使用fastapi和apifox实现后端接口

使用python文件import fastapi和uvicorn编写接口脚本 格式例&#xff1a; from pydantic import BaseModel from fastapi import FastAPI import uvicorn import jsonappFastAPI()class Response_data(BaseModel):re: strclass YourService():def __init__(self):passdef f(s…

【centos7安装docker】

背景&#xff1a; 学习docker&#xff0c;我是想做一个隔离环境&#xff0c;并且部署的话&#xff0c;希望实现自动化&#xff0c;不为安装软件而烦恼&#xff0c;保证每个人的环境一致。 2C4G内存 50G磁盘的虚拟机事先已经准备完毕。 1.查看下centos版本&#xff0c;docker要…

pytest自动化测试框架—基础篇

Pytest是一种基于Python编程语言的自动化测试框架&#xff0c;它提供了丰富的功能和灵活的扩展性&#xff0c;可以用于单元测试、集成测试、功能测试、端到端测试等多种场景。本文将介绍Pytest框架的基础知识&#xff0c;包括安装、配置、运行测试、断言和参数化等方面。 一、安…

shell脚本概念与命令

一、shell的作用 Shell 是一个特殊的应用程序&#xff0c;它介于操作系统内核与用户之间&#xff0c;充当 了一个“命令解释器”的角色&#xff0c;负责接收用户输入的操作指令&#xff08;命令&#xff09;并进行解释&#xff0c;将需要执 行的操作传递给内核执行&#xff0c;…

二分法——C++

二分分为整数二分和浮点数二分&#xff0c;其中比较复杂的是整数二分&#xff0c;简单一点的是浮点数二分。 我们首先来说明整数二分,主要来讲解模板。 整数二分&#xff1a; 我们先来说一说使用二分法的前提&#xff0c;要有单调性&#xff0c;然后可以根据某种性质来划分成…

【算法小记】——机器学习中的概率论和线性代数,附线性回归matlab例程

内容包含笔者个人理解&#xff0c;如果错误欢迎评论私信告诉我 线性回归matlab部分参考了up主DR_CAN博士的课程 机器学习与概率论 在回归拟合数据时&#xff0c;根据拟合对象&#xff0c;可以把分类问题视为一种简答的逻辑回归。在逻辑回归中算法不去拟合一段数据而是判断输入…

linux杀毒软件clamav安装使用

1、下载 在下面地址下载&#xff1a;https://www.clamav.net/downloads 2、安装 clamav-1.2.1.linux.x86_64.rpm放在/home路径。 执行&#xff1a; chmod -R 777 /home/clamav-1.2.1.linux.x86_64.rpm rpm -ivh clamav-1.2.1.linux.x86_64.rpm3、下载病毒库 下载路径&am…

数仓建设学习路线(三)元数据管理

什么是元数据&#xff1f; 简单来说就是描述数据的数据&#xff0c;更直白来说就是描述表名、表制作者、表字段、表生命周期、表存粗等信息的数据 元数据该如何管理 工具化 开源&#xff1a; 可通过atlas获取表依赖及信息做二次开发&#xff0c;或者完成可视化界面 平台化&am…

梳理Langchain-Chatchat知识库API接口

一.Langchain-Chatchat 知识库管理 1.Langchain-Chatchat 对话和知识库管理界面 Langchain-Chatchat v0.28 完整的界面截图&#xff0c;如下所示&#xff1a; 2.知识库中源文件和向量库 知识库 test 中源文件和向量库的位置&#xff0c;如下所示&#xff1a; 3.知识库表结构 k…

JavaWeb之开发介绍 --黑马笔记

什么是 Web &#xff1f; Web&#xff1a;全球广域网&#xff0c;也称为万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站。 Web 网站的工作流程 上图解释&#xff1a; 当你在浏览器中输入网址或点击一个链接时&#xff0c;浏览器会向前端服务器发起请求&…

CSAPP fall2015 深入理解计算机系统 Cache lab详解

Cache Lab cache lab 缓存实验 代码下载 从CSAPP上面下载对应的lab代码 http://csapp.cs.cmu.edu/3e/labs.html 环境准备 需要安装 valgrind。可以参考文章Valgrind centos。 安装好以后执行valgrind --version可以看到版本号。 Cache simulator cache simulator not a …

API接口安全总结

接口分类 HTTP接口 RPC接口&#xff08;客户端和服务器端的连接 例如游戏登陆&#xff09;非web协议&#xff0c;PRC 远程过程调用 Remote Procedure Call&#xff0c;其就是一个节点请求另外一个节点提供的服务。当两个物理分离的子系统需要建立逻辑上的关联时&#xff0c;R…

第08章_面向对象编程(高级)(static,单例设计模式,理解mian方法,代码块,final,抽象类与抽象方法,接口,内部类,枚举类,注解,包装类)

文章目录 第08章_面向对象编程(高级)本章专题与脉络1. 关键字&#xff1a;static1.1 类属性、类方法的设计思想1.2 static关键字1.3 静态变量1.3.1 语法格式1.3.2 静态变量的特点1.3.3 举例1.3.4 内存解析 1.4 静态方法1.4.1 语法格式1.4.2 静态方法的特点1.4.3 举例 1.5 练习 …