c# --WPF学习之路(一)_c# wpf-程序员宅基地

技术标签: c#  # c# WPF  wpf  

公众号“毛线杂货铺”,订阅收费文章可淘bao店铺ID:122344852

一直都是用Winform做桌面应用程序开发,听说WPF用起来比winform开发简单,更加灵活,做出来的界面可以更加美观,所以试试看,一起学习起来~~~

1.简单认识WPF项目组成

新建工程:
在这里插入图片描述
生成的项目由下几个部分组成:
在这里插入图片描述
App.xaml代码
在这里插入图片描述
MainWindow.xaml代码
在这里插入图片描述
由上面可以看出,基本界面由XAML语言组成。
ps:我使用的版本是VS2019,其他版本可能有不同的地方,但大致理解和使用一致。

2.XAML语言简单介绍

原来UI设计师和程序猿的方式:
程序猿根据客户需求,作出简单的界面,然后开始编写功能逻辑代码。UI设计师根据已有界面及需求等,设计出漂亮的界面,最后由程序猿根据设计图来实现界面效果。
但Winform做界面,往往最后的结果是不尽人意的,很难达到设计师要的效果,第一是绘制界面的局限性,还有为实现效果耗费的时间精力较大。
XAML语言是XML的衍生版,大体看起来和XML类似。
XAML语言的产生就可以实现UI设计师用Blend设计UI后,以XAML的形式直接保存,无需转换则可直接在VS中编译,程序猿则只需要开发后台逻辑代码。简单来说,XAML是WPF技术中用于设计UI的语言。
优点:
1.突破原本UI和逻辑代码的耦合性强,实现UI和逻辑分离。
2.可以设计出专业的UI,不需要编程语言,无需转换。

3.简单看懂XAML

xmlns-特征的语法格式

类似于winform的using System;,需要添加引用来使用某些类。
格式:

xmlns[:可选的映射前缀]="命名空间"

可以不写可选的映射前缀,意味着成为“默认命名空间”,但是默认命名空间只能有一个,尽量选择使用最多的命名空间来充当。
例子如下:
在这里插入图片描述
将带有下划线的xmlns,加上system:,改为非默认命名空间,则带来的改变如下:
在这里插入图片描述
至于引用对用c#的哪些命名空间,可以自行搜索。

x:Class

例如:
在这里插入图片描述
这里表示:我们XAML窗体界面对应的C#类

4.窗体属性

在这里插入图片描述
整个界面配置,可以直接摸索,和winform一样,可以使用简单的添加控件及修改属性

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Yyuanyuxin/article/details/108862193

智能推荐

DevExpress关于正版和非正版的运行以及发布的问题_devexpress23.2激活-程序员宅基地

文章浏览阅读283次。DevExpress关于正版和非正版的运行以及发布的问题。_devexpress23.2激活

Sql server 使用DBCC Shrinkfile 收缩日志文件-程序员宅基地

文章浏览阅读795次。Sql server 使用DBCC Shrinkfile 收缩日志文件_dbcc shrinkfile 收缩日志

生产计划管理软件有哪些?哪个好_生产计划执行管理有什么目的和意义-程序员宅基地

文章浏览阅读3.6k次。生产计划管理软件有哪些?哪个好?生产计划管理,一般是指企业对生产活动的计划、组织和控制工作。生产计划管理软件可提高生产效率、提升品质、降低成本等。对企业管理意义深远。​生产计划管理软件介绍:MES制造执行系统​MES系统是一套面向制造企业车间执行层的生产信息化管理系统。是生产工业常见的生产管理软件,他可以为企业提供包括制造数据管理、计划生产调度管理、库存管理以及质量管理,同时还有人力资源管理..._生产计划执行管理有什么目的和意义

vue播放flv格式视频_vue flv-程序员宅基地

文章浏览阅读4.7k次,点赞3次,收藏11次。vue播放flv视频_vue flv

JPBC库的使用实例——BLS签名_it.unisa.dia.gas.jpbc.element-程序员宅基地

文章浏览阅读1.5k次。这里展示了一个简单的对JPBC库的调用的实例。可以参考JPBC库的官方文档进行学习:http://gas.dia.unisa.it/projects/jpbc/docs/ecpg.html#TypeAimport it.unisa.dia.gas.jpbc.Element;import it.unisa.dia.gas.jpbc.Field;import it.unisa.dia.gas.jpbc.Pairing;import it.unisa.dia.gas.jpbc.PairingParam_it.unisa.dia.gas.jpbc.element

【Emmylua】lua的debug无效果connect localhost:9966 ... Connection refused: connect,pycharm使用Emmylua无法连接_try connect localhost:9966 ... connection refused:-程序员宅基地

文章浏览阅读2.1k次。Try connect localhost:9966 ...Connection refused: connectunity执行了,就会把端口占用掉,所以pycharm的debug那里就会断开了。然后打开的时候没注意,unity开启了A工程文件,pycharm开启了B工程文件。你可能会注意到每次播放unity的时候,debug工具都会自动断开一次连接。我赶紧改成unity开启了A工程文件,_try connect localhost:9966 ... connection refused: connect

随便推点

使用LL库开发STM32:UART进阶使用(DMA循环接收 + UART空闲中断)_stm32 ll uart-程序员宅基地

文章浏览阅读5.1k次,点赞10次,收藏20次。文章目录目的发送处理问题与解决方法个人常用处理方式数据接收与解析总结目的发送处理问题与解决方法个人常用处理方式数据接收与解析总结_stm32 ll uart

Android UI线程和非UI线程_android在ui线程-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏9次。UI线程及Android的单线程模型原则  当应用启动,系统会创建一个主线程(main thread)。  这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的UI组件(components from the Android UI toolkit (components from the android.widget andandroid.vie_android在ui线程

C++:opencv 人脸检测_c++ opencv十字检测-程序员宅基地

文章浏览阅读2.1k次,点赞3次,收藏19次。C++:opencv 人脸检测问题描述:要求输入一张图片;输出圈出人脸的图片;vs2015; opencv3.4.6;效果输入:输出:代码实现:#include "opencv2/objdetect.hpp"#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"#include <iostrea..._c++ opencv十字检测

CentOS增加IP地址的全面指南_centos追加ip-程序员宅基地

文章浏览阅读455次,点赞9次,收藏8次。在Linux服务器管理中,有时需要在不重启网络服务的情况下为网卡添加额外的IP地址。这一过程涉及到对网络配置文件的编辑和命令行工具的使用。下面是详细的步骤说明以及相关实例。_centos追加ip

hdu 5322 Hope 分治 NTT_hdu5322 ntt-程序员宅基地

文章浏览阅读453次。设f[i]f[i] 表示长度为i时的答案,那么 f[i]=∑i=1nCj−1i−1∗f[i−j]∗(j−1)!∗j2f[i]=\sum\limits_{i=1}^{n}C_{i-1}^{j-1}*f[i-j]*(j-1)!*j^2 然后这个东西直接分治fft就行了。 推错式子害死人。。。#include using namespace std;#define_hdu5322 ntt

vue单页面 全屏 使用 screenfull 实现全屏(左侧菜单栏隐藏)_vue在打开一个界面的时候隐藏侧边栏-程序员宅基地

文章浏览阅读1.4k次。vue单页面 全屏 使用 screenfull 实现全屏(左侧菜单栏隐藏)_vue在打开一个界面的时候隐藏侧边栏

推荐文章

热门文章

相关标签