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

掌握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

公众号“点滴分享技术猿

关注

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

竞赛保研 电影评论情感分析 - python 深度学习 情感分类

1 前言 &#x1f525;学长分享优质竞赛项目&#xff0c;今天要分享的是 &#x1f6a9; GRU的 电影评论情感分析 - python 深度学习 情感分类 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 这…

vue3-组件基础

什么是组件 组件允许我们将 UI 划分为独立的、可重用的部分&#xff0c;并且可以对每个部分进行处理。在实际应用中&#xff0c;组件常常被组织成层层嵌套的树状结构。 定义一个组件 我们一般会将 Vue 组件定义在一个单独的 .vue 文件中&#xff0c;这被叫做单文件组件 (简称…

【加速】Ubuntu 22.04 LTS Steam++ Watt Toolkit 加速 github

项目地址 SteamTools: &#x1f6e0;「Watt Toolkit」是一个开源跨平台的多功能 Steam 工具箱。 下载linux版本 wget https://gitee.com/rmbgame/SteamTools/releases/download/3.0.0-rc.3/Steam%20%20_v3.0.0-rc.3_linux_x64.tgz 解压到/opt/steam sudo mkdir /opt/steam…

【C语言】扫雷游戏完整代码实现

目录 1.game.h 2.game.c 3.progress.c 4.运行结果 1.game.h #define _CRT_SECURE_NO_WARNINGS#include <string.h> #include <stdio.h> #include <time.h> #include<stdlib.h>#define ROW 9 #define COL 9 #define ROWS 11 #define COLS 11 #defin…

ctfshow-反序列化(web271-web276)

目录 web271 web272-273 web274 web275 web276 为什么不用分析具体为什么能成功 ,后面会有几个专题 会对php框架进行更深入的了解 这里面会专门的研究 为什么能够实现RCE 前面作为初步的熟悉 首先知道一下他的框架 知道框架的风格 知道啥版本可以用什么来打 首先先不用太研…

CopyOnWriteArrayList源码

CopyOnWriteArrayList源码 介绍 CopyOnWriteArrayList底层采用数组对元素进行存储&#xff0c;采用写时复制技术:写的时候加锁&#xff0c;将原数组拷贝一份&#xff0c;对新数组进行操作&#xff0c;新数组长度为原数组长度1,写入完成后替换原数组&#xff0c;原数组使用vol…

【Linux】Vagrant搭建Linux环境

1. Vagrant Vagrant是一个基于Ruby的工具&#xff0c;用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统&#xff0c;使用 Chef创建自动化虚拟环境。 1.1 安装Vagrant 从Vagrant官网下载安装包&#xff0c;执行安装。 1.2 安装VirtualBox 从官网下载…

【linux基础】linux root用户密码忘记解决方式

方式一&#xff1a;进入单用户模式 1.开启虚拟机的时候&#xff0c;按下“e”健进入用户引导界面 2.再按下“e”&#xff0c;进入内核的编辑 3.找到kernel开头的选项&#xff0c;再次按下“e” 4. 输入 5. 按下“b”&#xff0c;启动 6. 启动后&#xff0c;输入passwd&#xf…

Git的管理操作

目录 前言 认识工作区、暂存区、版本库 小结&#xff1a; 使用场景--1&#xff1a; git log&#xff1a; 查看.git文件&#xff1a; 使用场景--2&#xff1a; git status&#xff1a; git diff&#xff1a; 进行提交&#xff1a; 总结&#xff1a; 版本回退 退…

搜索(2):宽度优先搜索

目录 1.宽度优先搜索(BFS) 2.马的遍历(经典宽搜) 2.1 建图 2.2 宽搜 2.3 完整代码 3.洛谷BFS 3.1 奇怪的电梯 3.2 Meteor Shower 1.宽度优先搜索(BFS) 宽搜从根进入&#xff0c;向下逐层扩展&#xff0c;逐层访问 宽搜是通过队列来实现的&#xff0c;用queue创建一个队列…

DataStream API(输出算子)

源算子 源算子 转换算子 转换算子 输出算子 1.连接到外部系统 连接外部系统是计算机科学和信息技术领域中常见的一个任务&#xff0c;通常涉及到与外部数据源或服务进行交互。具体的方法和工具会根据不同的应用场景和需求而有所不同。以下是一些常见的连接外部系统的方法&…

什么是 Web3.0

什么是Web3.0 对于 Web3.0 的解释网上有很多&#xff0c;目前来说 Web3.0 是一个趋势&#xff0c;尚未有明确的定义。我们今天讨论下几个核心的点&#xff0c;就能很好的理解 Web3.0 要解决哪些问题 谁创造数据&#xff0c;这里的数据可以是一篇博客&#xff0c;一段视频&…

Linux的例行性工作(计划任务)

目录 一、单一执行的例行性任务--at&#xff08;一 次性&#xff09; 1、安装 2、启动服务 3、at命令详解 1&#xff09;格式 2&#xff09;参数 3&#xff09;时间格式 4、实例 二、循环执行的例行性任务-- crontab&#xff08;周期性&#xff09; 1、crontd服务 2…

【Go面试向】defer与time.sleep初探

【Go面试向】defer与time.sleep初探 大家好 我是寸铁&#x1f44a; 总结了一篇defer传参与time.sleep初探的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 请大家看下面这段代码&#xff0c;看运行结果会出现什么&#xff0c;为什么&#xff1f; 问题 demo package mainim…

基于SpringBoot Vue航空机票预订系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

Qt-QFileDialog保存文件及获取带扩展名的文件名

正确用法 QFileDialog dialog(this, "Save File", QDir::currentPath(), "Text Files (.txt)"); dialog.setAcceptMode(QFileDialog::AcceptSave); dialog.setDefaultSuffix("txt"); // << if (!dialog.exec())return; QString fileName …

代码随想录算法训练营第28天 | 93.复原IP地址 + 78.子集 + 90.子集II

今日任务 93.复原IP地址 78.子集 90.子集II 93.复原IP地址 - Medium 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&a…

第一篇【传奇开心果系列】beeware的toga开发移动应用:轮盘抽奖移动应用

系列博文目录 beeware的toga开发移动应用示例系列博文目录一、项目目标二、开发传奇开心果轮盘抽奖安卓应用编程思路三、传奇开心果轮盘抽奖安卓应用示例代码四、补充抽奖逻辑实现五、开发传奇开心果轮盘抽奖苹果手机应用编程思路六、开发传奇开心果轮盘抽奖苹果手机应用示例代…

仓储管理系统——软件工程报告(总体设计)③

总体设计 一、需求规定 软件工程仓库存储管理系统的需求规定是确保系统能够满足用户期望、提高工作效率、确保数据安全性和系统可维护性的基石。其涵盖了功能性、性能、数据管理、用户界面和系统可维护性等多个方面。通过严格的验收标准&#xff0c;可以确保系统在实际应用中…

Linux: hardware: HP: DIMM

今天遇到一个问题是服务器上BIOS检查DIMM出现错误&#xff1a; 462-Uncorrectable Memory Error Threshold Exceeded(Processor 1, DIMM 14). The DIMM is mapped out and is currently not available. Action: Take corrective action for the failing DIMM. Re-map all DIMMs…