WPF实时时间显示demo(MVVM)

        跟着b站的视频学习做一个界面,它里面的时间不能实时刷新,因此自己研究写一个,同时加深一下自己对MVVM的理解.

        运行结果:

         实现步骤:

        1.界面

        界面设计就是放置了一个TextBlock,它的text绑定了ViewModel层里面的公告属性CurrentTime.

<Grid><TextBlock Text="{Binding CurrentTime}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"></TextBlock></Grid>

        2.ViewModel层构建

        新建了一个TimeViewModel.cs的文件

        在这个文件中,我首先让文件继承了INotifyPropertyChanged类,随机实现接口用于发放改变通知.然后我定义私有字段_currentTime和公有属性CurrtTime(与前端界面绑定的属性),在其set中设置监听,当属性改变时触发 PropertyChanged 事件,通知界面进行改变.之后,进行定时器的配置,在构造函数之中进行配置,设置为1s一变,并且将Time_Tick添加为Tric时间处理程序,Time_Trick里面绑定的是时间更新函数,至此实现整个流程成功.

 /// <summary>/// 管理时间和通知UI更新/// </summary>class TimeViewModel : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;private string _currentTime;private DispatcherTimer _timer;//构造函数public TimeViewModel(){_timer = new DispatcherTimer();_timer.Interval = TimeSpan.FromSeconds(1);//更新频率设为每秒_timer.Tick += Time_Tick;_timer.Start();/**从这一刻开始,_timer 开始计数。*每当 _timer 的时间间隔(1秒)到达时,它都会触发 Tick 事件。*由于 Timer_Tick 方法被添加为 Tick 事件的事件处理程序,因此每次 Tick 事件被触发时,Timer_Tick 方法都会被调用。*在 Timer_Tick 方法内部,调用了 UpdateTime 方法来更新 _currentTime 字段,*并由于 _currentTime 字段的 set 访问器内部调用了 OnPropertyChanged 方法,*这会导致 PropertyChanged 事件被触发,*通知任何监听这个事件的UI组件或其他对象,CurrentTime 属性的值已经改变。*/updateTime();//初始化}private void Time_Tick(object sender, EventArgs e){updateTime();}private void updateTime(){CurrentTime = DateTime.Now.ToString("HH:mm:ss");}public string CurrentTime{get { return _currentTime; }set {_currentTime = value;OnPropertyChanged(nameof(CurrentTime));}}private void OnPropertyChanged(string v){if (PropertyChanged != null){PropertyChanged(this,new PropertyChangedEventArgs(v));}}}

        3.实例化TimeViewModel,并且设计数据上下文,让界面和ViewModel层完成最后的绑定

    public partial class MainWindow : Window{private TimeViewModel _viewModel;public MainWindow(){InitializeComponent();_viewModel = new TimeViewModel();this.DataContext = _viewModel;}}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Copilot如何将word文稿一键转为PPT

背景 很多小伙伴平时经常会遇到的一个场景是&#xff0c;如何将word文稿图文转为PPT。 这个过程是既复杂而又无趣的。 现在&#xff0c;有了copilot&#xff0c;你可以一键搞定&#xff01; 使用copilot Pro来实现 比如我们想要做一个关于copilot studio的PPT展示&#xf…

【机器人控制 Robot Control】非线性控制(Non-linear Control)建模举例【新加坡南洋理工大学 NTU Singapore】

Non-linear Control Method Example: Non-linear Mechanical System Modelling of the System using Control Law Partitioning (Handwritten)

目标检测C-RNN,Fast C-RNN,Faster C-RNN,SSD,Mask R-CNN 理论简单介绍

参考&#xff1a; https://zh-v2.d2l.ai/chapter_computer-vision/multiscale-object-detection.html R-CNN 及系列 区域卷积神经网络 region-based CNN R-CNN R-CNN首先从输入图像中选取若干&#xff08;例如2000个&#xff09;提议区域&#xff0c;并标注它们的类别和边界…

【Leetcode每日一题】 位运算 - 丢失的数字(难度⭐)(34)

1. 题目解析 题目链接&#xff1a;268. 丢失的数字 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 首先&#xff0c;我们设定一个长度为n的数组。理想情况下&#xff0c;如果这个数组是从0到n-1的连续整数序列&#…

Era Network在web3行业的价值

近年来,以比特币和以太坊为代表的区块链技术快速发展,去中心化、信任机制的创新概念也越来越受到广泛关注。AI人工智能与区块链技术在互联网应用领域的落地,正在引领互联网进入价值互联的新阶段web3.0时代&#xff01; 新行业发展的价值与优先级 WEB3行业发展的核心需求是&…

基于SSM的协同过滤算法的电影推荐系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的协同过滤算法的电影推荐系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通…

利用“定时执行专家”软件的25种任务与12种触发器,提升IT系统管理自动化水平

在IT系统管理中&#xff0c;自动化是提高工作效率、减少人为错误的关键。而《定时执行专家》这款软件&#xff0c;以其强大的功能、易用性和毫秒级的执行精度&#xff0c;成为了IT系统管理员的得力助手。今天&#xff0c;我们就来探讨一下如何利用这款软件的25种任务类型和12种…

cesiumlab中shp转3dtiles白模效果一

安装cesiumlab 如果没有安装cesiumlab&#xff0c;去官网下载安装一个即可 http://www.cesiumlab.com/cesiumlab.html 效果 步骤 1、准备shp面数据 2、打开cesiumlab软件转换 选择shp面数据 设置高度&#xff0c;如果shp面中有高度字段&#xff0c;可以用高度字段&#xff…

Stream-JDK8

Stream概念 代码示例 package com.zz.stream;import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors;/*** 使用Stream流* 找出姓张并且是三个字的名字*/ public class Test {public static void main(Stri…

sqllab第二关通关笔记

知识点整理&#xff1a; 数值型注入判断手法 1/1 1/0 回显不同错误注入函数 extractvalue(xml_flag,xpath) xml_flag&#xff1a;文件表示符xpath&#xff1a;文件路径&#xff1b;不能识别‘~’ ‘#’ 等特殊字符&#xff1b;遇到就报错并打印xpath内容~(十六进制表示)&#…

反爬虫技术:如何保护你的网站数据安全

在数字化时代&#xff0c;数据的价值日益凸显&#xff0c;而爬虫技术则成为了获取这些数据的重要手段之一。然而&#xff0c;对于网站运营者来说&#xff0c;非法爬虫不仅会导致数据泄露&#xff0c;还可能给网站带来巨大的流量压力和安全隐患。因此&#xff0c;本文将探讨如何…

【数据挖掘】实验2:R入门2

实验2&#xff1a;R入门2 一&#xff1a;实验目的与要求 1&#xff1a;熟悉和掌握R数据类型。 2&#xff1a;熟悉和掌握R语言的数据读写。 二&#xff1a;实验内容 1&#xff1a;R数据类型 【基本赋值】 Eg.1代码&#xff1a; x <- 8 x Eg.2代码&#xff1a; a city …