wpf中如何访问控件和生成使用事件?

news2024/11/16 9:43:32

实际上对于初次使用wpf的同学来说,尤其是有winform编程经验的童鞋来说,最需要解决的就是快速掌握访问控件的方法以及生成和使用事件。这样才能让页面具有最起码的交互性。下面我们来分别讲述。

文章原出处:https://blog.csdn.net/haigear/article/details/142470497

文章目录

  • 一、通过设置名称访问控件
    • 1.在XAML中设置控件名称
    • 2.在代码后面访问控件
  • 二、访问控件的其他方法
    • 1、通过父控件访问
  • 三、添加事件和处理事件
    • 1.在XAML中附加事件处理器
    • 2.在代码后面定义事件处理器
    • 3、使用Visual Tree Helper

一、通过设置名称访问控件

1.在XAML中设置控件名称

在xaml文件中为控件设置一个名称(Name属性),这样可以在代码后面直接通过这个名称访问它。

<Button x:Name="btn" Content="Click Me"/>
<Button Name="btn" Content="Click Me"/>

只要没有名称空间的冲突,直接使用name,前面不加x:也是可以的。

2.在代码后面访问控件

完成上面这一步后,通过控件的名称属性,你可以在cs代码后面访问和操作这个控件。比如,我们给刚刚生成的按钮修改一下文字。代码如下:

// 访问按钮并设置属性
btn1.Content = "New Content";
// 调用按钮的方法
btn1.IsEnabled = false;
生成和使用事件
int counter = 0;
private void Button_Click(object sender, RoutedEventArgs e)
{
    btn1.Content = "click "+counter+" times";
    counter++;
}

在这里插入图片描述
在这里插入图片描述

二、访问控件的其他方法

1、通过父控件访问

假设你和我一样不想为控件一个个去命名,但如果你知道控件的父控件,可以通过父控件的Children集合访问子控件。

// 假设myButton是某个容器控件的子控件
Button foundButton = (Button)myContainerControl.Children[0];

文章原出处:https://blog.csdn.net/haigear/article/details/142470497

三、添加事件和处理事件

1.在XAML中附加事件处理器

为控件的事件(如Click)附加一个事件处理器。

<Button Content="Click Me" Click="myButton_Click"/>

其实最简单的,符合我们winform操作系统的方法是点击控件,右键菜单中找到“属性”,在属性“扳手”符号右边的“闪电”符号,点击他,你就可以看到所有可以使用的事件了,当然,肯定排在第一位的就是click事件,输入事件名称回车或者直接双击都可以来到事件代码编辑界面:
在这里插入图片描述
这里可以放心的是,控件有没有name属性都不影响给它添加事件。

2.在代码后面定义事件处理器

在代码后面定义事件处理器的方法,处理事件逻辑。

private void myButton_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Button clicked!");
}

3、使用Visual Tree Helper

如果需要更复杂的访问方式,比如访问嵌套较深的控件,可以使用VisualTreeHelper类。

a、事件处理的高级用法
使用命令(ICommand)
在MVVM模式中,推荐使用命令来处理事件,这样可以将UI逻辑与业务逻辑分离。

// 在ViewModel中定义命令
public ICommand MyCommand { get; private set; }

public MyViewModel()
{
    MyCommand = new RelayCommand(MyExecuteMethod);
}

private void MyExecuteMethod()
{
    // 执行的逻辑
}

然后在XAML中将命令绑定到控件的事件。

<Button Content="Click Me" Command="{Binding MyCommand}"/>

b、使用事件聚合器(Event Aggregator)

在复杂的应用中,可以使用事件聚合器来解耦事件的发布和订阅。

文章原出处:https://blog.csdn.net/haigear/article/details/142470497
我相信,结合我前面的《winform和wpf异同,WPF对于新人上手容易吗?》这篇文章,你基本可以开启你的WPF之旅了。当然,我还会补充一片有关wpf的数据绑定的博文,请大家继续关注《wpf中如何进行数据绑定及控件数据的动态操作》。

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

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

相关文章

「数组」离散化 / Luogu B3694(C++)

目录 概述 思路 算法过程 复杂度 Code 概述 Luogu B3694&#xff1a; 给定一个长度为 n 的数列 aa。定义 rank(i) 表示数列 a 中比 ai 小的不同数字个数再加一。 对 1≤i≤n&#xff0c;现在请你求出所有的 rank(i)。 输出格式 对每组数据&#xff0c;输出一行 n 个整数&a…

智慧照明,安全度夏:揭秘如何前置防御暴雨中的路灯杆漏电隐患

随着夏季暴雨频发&#xff0c;多地近期发生的多起路人因路灯杆漏电触电身亡的悲剧&#xff0c;再次为公众安全敲响了警钟。从河南郑州到辽宁营口&#xff0c;一起起触目惊心的触电事故&#xff0c;不仅夺走了宝贵的生命&#xff0c;也引发了社会各界对暴雨天气下公共设施安全隐…

轴承介绍以及使用

轴承&#xff08;Bearing&#xff09;是在机械传动过程中起固定、旋转和减小载荷摩擦系数的部件。也可以说&#xff0c;当其它机件在轴上彼此产生相对运动时&#xff0c;用来降低运动力传递过程中的摩擦系数和保持转轴中心位置固定的机件。 轴承是当代机械设备中一种举足轻重的…

Go Mail设置指南:如何提升发送邮件效率?

Go Mail使用技巧与配置教程&#xff1f;如何用Go Mail实现发信&#xff1f; 随着工作负载的增加&#xff0c;如何高效地发送和管理邮件成为了许多职场人士面临的挑战。AokSend将为您提供一份详细的Go Mail设置指南&#xff0c;帮助您提升发送邮件的效率&#xff0c;让您的邮件…

数据库学习1

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 登录 查看所有库 切换数据库 查看对应库所有的表 修改权限和密码 启动和停止服务器 创建数据库 查看数据库的表结构 创建表 在表…

Github Webhook触发Jenkins自动构建

1.功能说明 Github Webhook可以触发Jenkins自动构建&#xff0c;通过配置Github Webhook&#xff0c;每次代码变更之后&#xff08;例如push操作&#xff09;&#xff0c;Webhook会自动通知Jenkins服务器&#xff0c;Jenkins会自动执行预定义的构建任务&#xff08;如Jenkins …

揭秘“隐形杀手”:谐波对医院电网的隐形危害

谐波主要由非线性负载设备如医疗器械、节能照明、变频调速装置等产生。在医院的复杂配电网络中&#xff0c;这些谐波成分如同细小的波纹&#xff0c;不断叠加&#xff0c;最终扰乱了电能的纯净性&#xff0c;导致电能品质下降&#xff0c;电力供应的可靠性也随之降低。 医院里…

Linux ping c实现

linux下ping程序的c实现 #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdint.h> #include <netdb.h> #include <arpa/inet.h> #include <unistd.h> #include <st…

服务设计原则介绍

在Java或任何软件开发中&#xff0c;设计服务时遵循一些核心原则是非常重要的&#xff0c;这些原则不仅有助于构建高质量、可维护的软件系统&#xff0c;还能提高系统的可扩展性和可重用性。以下是一些关键的服务设计原则&#xff1a; 单一职责原则&#xff08;SingleResponsib…

将python代码文件转成Cython 编译问题集

准备setup.py from distutils.core import setup from Cython.Build import cythonize import glob# 指定目标目录 python setup.py build -c mingw32 target_dir "src"# 使用glob模块匹配目录中的所有.pyx文件 pyx_files glob.glob(target_dir "/**/*.py&q…

路政通 | OPENAIGC开发者大赛高校组AI创新之星奖

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…

Vue+Tui-image-editor实现图片编辑(涂鸦,裁剪,标注,旋转,滤镜)

目录 前言 效果展示 涂鸦 裁剪 标注 旋转 滤镜 安装 使用 中文化自定义样式按钮优化 参考链接 前言 需求&#xff1a;对图片进行旋转、缩放、裁剪、涂鸦、标注、添加文本等。 效果展示 涂鸦 裁剪 标注 旋转 滤镜 安装 npm i tui-image-editor // or yarn add tui-image…

【hot100-java】【环形链表 II】

印象题 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode detectCycle(ListNode head) {ListNode fasthea…

①无需编程 独立通道 Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器

Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器https://item.taobao.com/item.htm?ftt&id743840591638 EtherNet/IP 串口网关 EtherNet/IP 转 RS485 型号 2路总线EIP网关 MS-A1-2021 4路总线EIP网关 MS-A1-2041 4路总线EIP网关&#xff08;双网口&am…

NASA数据集:ATLAS/ICESat-2 L3 A海冰干岸,版本6

目录 ATLAS/ICESat-2 L3 A海冰干岸&#xff0c;版本6 简介 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3 A海冰干岸&#xff0c;版本6 简介 ICESat-2天文台利用光计数激光雷达&#xff08;ATLAS仪器&#xff09;和辅助系统&#xff08;GPS、…

速通LLaMA3:《The Llama 3 Herd of Models》全文解读

文章目录 概览论文开篇IntroductionGeneral OverviewPre-TrainingPre-Training DataModel ArchitectureInfrastructure, Scaling, and EfficiencyTraining Recipe Post-TrainingResultsVision ExperimentsSpeech Experiments⭐Related WorkConclusionLlama 3 模型中的数学原理1…

mybatisplus介绍以及使用(下)

目录 一、mybatisplus扩展功能 1、代码生成 1.1 安装插件 1.2 使用 2、逻辑删除 二、插件功能 1、分页插件 2、示例 写在前面&#xff1a; 在上篇的mybatisplus中介绍到了其概念&#xff0c;其中包括了什么是mybatisplus以及已经有了mybatis但是我们为什么使用它&#x…

【MySQL内置数据库】information_schema

MySQL8.0.37 统计 1 ADMINISTRABLE_ROLE_AUTHORIZATIONS 2 APPLICABLE_ROLES 3 CHARACTER_SETS 提供了关于可用字符集的信息 4 CHECK_CONSTRAINTS 5 COLLATIONS 提供了关于字符集的排序规则的信息 6 COLLATION_CHARACTER_SET_APPLICABILITY 7 COLUMNS …

基于JAVA+SpringBoot+Vue的医院后台管理系统

基于JAVASpringBootVue的医院后台管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈…

Redis 消息队列

认识消息队列 消息队列&#xff08;Message Queue&#xff09;字面意思就是存放消息的队列&#xff0c;最简单的消息队列模型包括 3 个角色 消息队列&#xff1a;存储和管理消息&#xff0c;也被称为消息代理&#xff08;Message Broker&#xff09; 生产者&#xff1a;发送消…