WPF学习三(MVVM+自定义按钮等的登录界面)

         跟着bilibil龙马哥视频做的一个登录界面,个人感觉讲得很到位,适合新手),他是从开始的前后绑定慢慢解耦合到MVVM,让我较快的理解了WPF的基础。

        

【WPF入门】WPF零基础到精通,从概念到实操,步步提升!_哔哩哔哩_bilibili

成果展示

         

鼠标放置颜色改变

对passwordbox添加属性,能够binding

实现过程

        界面布局,直接使用代码进行编辑

        整体分为上下两部分,及两行,顶行进行标题设计,第二行进行其他控件的设计。

        第二行分为左右两部分,左边这部分放置图片,右边放置账号、密登录按钮这写text和button。下面的代码是最终版本,里面有些控件和属性属于自定义。

    <Grid><!--定义两行--><Grid.RowDefinitions><RowDefinition Height="25"></RowDefinition><RowDefinition></RowDefinition></Grid.RowDefinitions><!--第一行 标题--><TextBlock Text="在线办公管理系统" Width="800" FontWeight="Bold"  Background="#0078d4"FontSize="20" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock><!--第二行--><Grid Grid.Row="1"><!--分成两列--><Grid.ColumnDefinitions><ColumnDefinition Width="180"></ColumnDefinition><ColumnDefinition></ColumnDefinition></Grid.ColumnDefinitions><!--第一列:图片--><Border Background="LightBlue"><Image Source="Images/Login.png" Height="90" Width="90" ></Image></Border><!--第二列 使用border给整个部分赋值背景--><Border Grid.Column="1"  Background="LightCyan"><Grid HorizontalAlignment="Center" Height="200" Width="200" VerticalAlignment="Center"><!--三行两列--><Grid.RowDefinitions><RowDefinition Height="30"></RowDefinition><RowDefinition Height="30"></RowDefinition><!--auto 这一行占多少就有多高--><RowDefinition Height="auto"></RowDefinition></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="50"></ColumnDefinition><ColumnDefinition Width="100"></ColumnDefinition></Grid.ColumnDefinitions><!--第一行第一列--><TextBlock Text="账号" Margin="0,0,0,4"></TextBlock><!--第一行第二列--><!--Binding 绑定获取文本框的内容--><!--<TextBox Grid.Column="1" Margin="0,4"   x:Name="txtAccount" ></TextBox>--><TextBox Grid.Column="1" Margin="0,4"  Text="{Binding AccountModel.Account}"  ></TextBox><!--第二行第一列--><TextBlock Text="密码"  Grid.Row="1" Margin="0,4"  ></TextBlock><!--第二行第二列--><!--<TextBox Grid.Row="1" Grid.Column="1" Margin="0,4"  Text="{Binding AccountModel.Code}"></TextBox>--><!--<PasswordBox Grid.Row="1" Grid.Column="1" Margin="0,4"  Password="{Binding AccountModel.Code}"></PasswordBox> 报错 password不是依赖属性--><PasswordBox Grid.Row="1" Grid.Column="1" Margin="0,4"  pwdns:PasswordBoxExtend.MyPwd="{Binding AccountModel.Code,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" pwdns:PasswordBoxExtend.IsBind="True"  ></PasswordBox><!--第三行 2列合并:Grid.ColumnSpan="2"--><custBtnNs:CustomButtons OverBackground="green"  BtnRadius="5" Content="登录" Grid.Row="2" Grid.ColumnSpan="2" FontSize="20" Background="LightBlue" Command="{Binding Command}" HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" Width="100"></custBtnNs:CustomButtons><!--绑定命令--></Grid></Border></Grid></Grid>

        我这里也按照我的理解一步一步的推进

         2.前后端直接绑定

         最开始实现的是使用的按钮的click和对账号和密码的两个TextBox设置名字,并在后台调用text的方法。

        3.双向绑定

   

        上图的视图View就是主界面,此外设计了一个模型Model与其进行双向绑定 ,账号和密码属性便是定义在model下的后台代码下,这是一个解耦的过程,目的可以实现项目的并行开发。

        4.委托和指令

         

         5.MVVM

        模型处理数据给试图模型,视图模型和界面相互绑定处理。

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

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

相关文章

换手机后日记不见了怎么恢复?换手机日记内容同步方法

曾经&#xff0c;我使用的是一款苹果手机&#xff0c;这部手机陪伴了我整整3年。随着时间的推移&#xff0c;手机内存不够用成为了我面临的一个大问题&#xff0c;因此我决定更换一部新手机——这次我选择了OPPO品牌。在更换手机的过程中&#xff0c;我利用手机搬家软件一键同步…

英语四级开始报名了?大学生如何三个月突破四级【文章底部添加进大学生就业交流群】

目录 一、明确考试内容与要求 二、制定合理的复习计划 三、注重听力和阅读能力的提升 四、加强词汇和语法的积累 五、多做真题和模拟题 英语四级考试&#xff0c;对于大多数大学生来说&#xff0c;是检验英语水平的一个重要标准。随着报名时间的来临&#xff0c;许多同学都…

vue3 ref获取子组件显示 __v_skip : true 获取不到组件的方法 怎么回事怎么解决

看代码 问题出现了 当我想要获取这个组件上的方法时 为什么获取不到这个组件上的方法呢 原來&#xff1a; __v_skip: true 是 Vue 3 中的一个特殊属性&#xff0c;用于跳过某些组件的渲染。当一个组件被标记为 __v_skip: true 时&#xff0c;Vue 将不会对该组件进行渲染&am…

开源模型应用落地-工具使用篇-Spring AI-高阶用法(九)

一、前言 通过“开源模型应用落地-工具使用篇-Spring AI-Function Call&#xff08;八&#xff09;-CSDN博客”文章的学习&#xff0c;已经掌握了如何通过Spring AI集成OpenAI以及如何进行function call的调用&#xff0c;现在将进一步学习Spring AI更高阶的用法&#xff0c;如…

vscode 使用ssh进行远程开发 (remote-ssh),首次连接及后续使用,详细介绍

在vscode添加remote ssh插件 首次连接 选择左侧栏的扩展&#xff0c;并搜索remote ssh 它大概长这样&#xff0c;点击安装 安装成功后&#xff0c;在左侧栏会出现远程连接的图标&#xff0c;点击后选择ssh旁加号便可以进行连接。 安装成功后vscode左下角会有一个图标 点击图…

08.回调地狱函数及其解决(Promise链式调用)

一.同步代码和异步代码 1. 同步代码&#xff1a; 逐行执行&#xff0c;需原地等待结果后&#xff0c;才继续向下执行 2. 异步代码&#xff1a; 调用后耗时&#xff0c;不阻塞代码继续执行&#xff08;不必原地等待&#xff09;&#xff0c;在将来完成后触发回调函数传递结果…

Windows上基于名称快速定位文件和文件夹的免费工具Everything

在Windows上搜索文件时&#xff0c;使用windows上内置搜索会很慢&#xff0c;这里推荐使用Everything工具进行搜索。 "Everything"是Windows上一款搜索引擎&#xff0c;它能够基于文件名快速定位文件和文件夹位置。不像Windows内置搜索&#xff0c;"Everything&…

Docker-完整项目的部署(保姆级教学)

目录 1 手动部署(白雪版) 1.1 创建网络 1.2 MySQL的部署 1.2.1 准备 1.2.2 部署 1.3 Java项目的部署 1.3.1 准备 1.3.1.1 将Java项目打成jar包 1.3.1.2 编写Dockerfile文件 1.3.2 部署 1.3.2.1 将jar包、Dockerfile文件放在linux同一个文件夹下 1.3.2.2 构建镜像 …

飞行汽车首飞成功?一文讲解飞行汽车与其代表的立体交通形式

中国的“飞行汽车”从深圳跨越大湾区到珠海首飞成功&#xff0c;既是一次重要尝试&#xff0c;更是交通运输行业发展史中一个全新的起点 关注我&#xff0c;共同交流&#xff0c;一起成长 前言一、基本认识飞行汽车二、发展飞行汽车必要性三、飞行汽车所形成的影响 前言 2月27…

swoole

php是单线程。php是靠多进程来处理任务&#xff0c;任何后端语言都可以采用多进程处理方式。如我们常用的php-fpm进程管理器。线程与协程,大小的关系是进程>线程>协程,而我们所说的swoole让php实现了多线程,其实在这里来说,就是好比让php创建了多个进程,每个进程执行一条…

用云手机进行舆情监测有什么作用?

在信息爆炸的时代&#xff0c;舆情监测成为企业和政府决策的重要工具。通过结合云手机技术&#xff0c;舆情监测系统在品牌形象维护、市场竞争、产品研发、政府管理以及市场营销等方面发挥着关键作用&#xff0c;为用户提供更智能、高效的舆情解决方案。 1. 品牌形象维护与危机…

【数据结构】二、线性表:6.顺序表和链表的对比不同(从数据结构三要素讨论:逻辑结构、物理结构(存储结构)、数据运算(基本操作))

文章目录 6.对比&#xff1a;顺序表&链表6.1逻辑结构6.2物理结构&#xff08;存储结构&#xff09;6.2.1顺序表6.2.2链表 6.3数据运算&#xff08;基本操作&#xff09;6.3.1初始化6.3.2销毁表6.3.3插入、删除6.3.4查找 6.对比&#xff1a;顺序表&链表 6.1逻辑结构 顺…

提取pdf图档中的物料编码

一、摘要 图1 图档示例 本篇代码目的是从指定文件夹下的PDF文件中提取物料编码等相关信息&#xff0c;并将这些信息存储在列表中输出。这段代码主要实现了以下功能&#xff1a; 定义一个file_name函数&#xff0c;用于获取指定文件夹下所有文件的完整路径。通过遍历文件夹和子文…

CubeMX使用教程(2)——点亮LED

在上一章&#xff0c;我们完成了CubeMX的环境配置&#xff0c;这一章我们通过CubeMX来完成点亮LED的工作。 通过LED原理图可知&#xff0c;如果我们要点亮LD1&#xff08;第一个灯&#xff09;&#xff0c;它对应开发板的PC8端口&#xff0c;因此我们应该在CubeMX中将PC8配置为…

企业怎么做好数字化转型?

企业进行数字化转型是一个复杂的过程&#xff0c;涉及多个方面和步骤。一些关键点可以帮助企业在数字化转型中取得成功&#xff1a; 1.明确目标和愿景&#xff1a;确定企业数字化转型的目的&#xff0c;这可能包括提高效率、增强客户体验、创造新的收入来源等。设定清晰、可衡…

gradio 摄像头视频流获取

参考&#xff1a;https://github.com/gradio-app/gradio/issues/1490 版本&#xff1a;gradio 4.16.0 gradio_client 0.8.1 import gradio as grgr.Interface(lambda x: x, gr.Image(sourceswebcam, streamingTrue), "image", liveTrue).launch()

预付费电表的应用和预付费平台的操作方式

*、智能预付费电能表的应用分析 1应用功能的分析 这里主要讲的是与远程抄表系统的结合&#xff0e;如图2所示&#xff0e;为系统工作的程序&#xff0e;在远程抄表中&#xff0c;通信方式多种多样&#xff0e;主要有互联网、电话线通信、有线电视通信、光纤通信、GPRS、卫星通…

NLP:自定义模型训练

书接上文&#xff0c;为了完成指定的任务&#xff0c;我们需要额外训练一个特定场景的模型 这里主要参考了这篇博客&#xff1a;大佬的博客 我这里就主要讲一下我根据这位大佬的博客一步一步写下时&#xff0c;遇到的问题&#xff1a; 文中的cfg在哪里下载&#xff1f; 要不…

微信小程序用户登陆和获取用户信息功能实现

官方文档&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 接口说明&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html 我们看官方这个图&#xff0c;梳理一下用户…

气相白炭黑外资垄断格局被打破 国内本土企业数量增加

气相白炭黑外资垄断格局被打破 国内本土企业数量增加 气相白炭黑又名气相二氧化硅&#xff0c;是一种无毒、无味、无嗅&#xff0c;无污染的非金属氧化物&#xff0c;主要由硅的卤化物在氢氧火焰中高温水解生成的带有表面羟基和吸附水的无定形的纳米级颗粒。气相白炭黑主要用于…