02-WPF_基础(一)

 1、基础

各模块类型

链接:如何:向 Viewbox 的内容应用 Stretch 属性 - WPF .NET Framework | Microsoft Learn

WPF基础以及事件绑定与数据绑定的情况,,在学习XAML,数据结构以及一个项目学习平台来练手,网络编程与数据通信,空压机啥的项目。;

1、项目文件简介

1.1、AppConfig

配置文件或者数据库,连接字符串,配置信息

2、App.xaml

设置应用程序起始文件,系统级资源。

StartupUri="MainWindow.xaml">   意思为指定起始文件   为MianWindow.xaml

<Application.Resources>   定义整个WPF应用程序的相关资源。

一个xaml至少包括两个命名空间:默认的;带x前缀的;

3、App.xaml.cs 

app.xaml的后台类文件

4、MainWindow.xaml

Window--WPF应用程序界面与xaml设计文件

5、Mainwindow。xaml.cs  

xaml窗口文件的后台代码文件

2、事件驱动与数据驱动

1、事件驱动

Winform主要的模式

委托绑定

2.1、数据驱动

WPF主要的模式:数据驱动与绑定

1、MainWindow:

此时需要定义:mainViewModel  _mianViewModel=newmainViewModel();   

this.DataContext=_mainViewModel;

    /// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{mainViewModel mainViewModel = new mainViewModel();public MainWindow(){InitializeComponent();// mainViewModel = new mainViewModel(this);   //  实例化类,建立连接this.DataContext= mainViewModel;    //  实例化绑定连接}private void Button_Click(object sender, RoutedEventArgs e){业务逻辑//mainViewModel.Value = "10";}}

上述是数据绑定的格式

2、mainViewModel

这个定义待绑定的事件:继承INotifyPropertyChanged

public  event PropertyChangedEventHandler PropertyChanged

PropertyChanged?.Invoke(this,new PropertyChangedEventArgs("具体需要执行的")

    public class mainViewModel:INotifyPropertyChanged{//  这种绑定方式//MainWindow _mainWindow;//public mainViewModel(MainWindow mainWindow)//{//    _mainWindow = mainWindow;//}public event PropertyChangedEventHandler PropertyChanged;  //  需要定义事件 eventprivate string _value="ZHAOXI";public List<ValueModel> ValueList {  get; set; }=new List<ValueModel> { new ValueModel{Value = "123", Name="AAA"},new ValueModel{Value="456", Name="BBB"}};public string Value {get { return _value; }set{_value = value;//_mainwindow.tbName.text = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value"));   //  此句放在属性改变后语句之后if (value == "10"){ValueColor= Brushes.Red;// this.txName.Foreground=Brushes.Red;}(this.ValueCommand as CommandBase).RaiseChanged();}}private Brush _valueColor = Brushes.Orange;public Brush ValueColor{get { return _valueColor; }set{_valueColor = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("ValueColor"));}}private ICommand valueCommand;//  属性public ICommand ValueCommand { get { if(valueCommand==null){valueCommand = new CommandBase() { DoAction = new Action<object>(ValueCommandAction), DoCanExecute = new Func<object, bool>(CanExecute) };}return valueCommand; }set { valueCommand = value; }}private void ValueCommandAction(object obj){Value = "10";}public bool CanExecute(object obj){return !string.IsNullOrEmpty(Value);}}

3、ICommand

事件点击问题

    internal class CommandBase : ICommand{public event EventHandler CanExecuteChanged;//public event EventHandler CanExecuteChanged  //  此为事件定义和声明 也可为public event EventHandler CanExexuteChanged;//{//    add//    {//        throw new NotImplementedException();//    }//    remove//    {//        throw new NotImplementedException();//    }//}public bool CanExecute(object parameter){// 绑定了这个命令的按钮是否能用return DoCanExecute?.Invoke(parameter)==true;  ///  当等于true才触发}public void Execute(object parameter)  //  parameer  这个参数为commandparameter这个控件属性{// 执行逻辑DoAction?.Invoke(parameter);}public Action<object> DoAction { get; set; }public Func<object, bool> DoCanExecute { get; set; }public void RaiseChanged(){CanExecuteChanged?.Invoke(this,new EventArgs());}}

4、ValueModel

此模块是为了在右边显示

    public class ValueModel{public string Value { get; set; }public string Name { get; set; }}

上述是数据绑定的格式:

后续包括:布局控件、资源样式、模板、依赖属性、数据绑定、图形、事件与行为、动画等。

2.3、路径

路径:imgPic.Source=new BitmapImage(new Uri("image/12window.png",UriKind.Relative);

URI:(全称:Uniform Resource Identifier)统一资源标识符,它是一个字符串用来标示抽象或物理资源。

Web上可用的每种资源( HTML文档、图像、音频、视频片段、程序等)都由一个通用资源标识符(Uniform Resource Identifier, 简称”URI”)进行定位。

URI的格式也由三部分组成:

  1. 访问资源的命名机制。
  2. 存放资源的主机名。
  3. 资源自身的名称,由路径表示。

相对路径

.资源的生成操作为Resource

//  相对路径
//  命名控件引入using System.Windows.Media.Imaging;才可以直接用
imgPic.Source = new BitmapImage(new Uri("image/12window.png", UriKind.Relative)); //  Source  --- ImageSource

绝对路径:  

WPF支持两种授权:pack URI方案 application:///和  siteoforigin:///。

但是用siteoforingin替换application时候需要将图片资源的属性面板里的生成操作里将Resource改为内容才可以执行。注意两种方式路径的书写方式

//  授权  指定包含不见得程序包的类型,而路径, 则指定部件在程序包中的位置。

//  绝对路径Absolute
            // WPF支持两种授权: pack://application:,,,/和  pack://siteoforigin:,,,//。
            //  授权  指定包含不见得程序包的类型,而路径, 则指定部件在程序包中的位置。

// imgPic.Source = new BitmapImage(new Uri("pack://application:,,,/image/12window.png", UriKind.Absolute));imgPic.Source=new BitmapImage(new Uri("pack://application:,,,/image/12window.png",UriKind.Absolute));//imgPic.Source = new BitmapImage(new Uri("pack://siteoforigin:,,,//image//12window.png", UriKind.Absolute));

第三种方式:

// 第三种方式
// 实际读取的是E:\SoftStudy\C#\C#\基础\01WPF基础\02控件_1\bin\Debug路径里的image/12window.png文件,与image里的生成操作方式无关

private void Button_Click(object sender, RoutedEventArgs e){imgPic.Source=new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory+"image/12window.png",UriKind.Absolute));}

 3.2、XAML

定义:为定义用户界面创建的一种新的“可扩展的程序标记语言”。

需要命名空间:但是不太一样

下图像网址一样:

xaml命名空间格式:引用命名空间:xmlns:(前缀名)=“命名空间描述”;

自定义类或程序集映射语法:xmlns:(必选前缀)=“clr-namespace:(命名空间); assemly=(程序集名称)”;

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

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

相关文章

儿童社交恐惧:关爱与引导,帮助孩子走出阴霾

引言 儿童的社交能力是其心理健康和全面发展的重要组成部分。然而&#xff0c;有些儿童会表现出社交恐惧&#xff0c;这种情况不仅影响他们的日常生活和学习&#xff0c;还可能对其长远发展产生不利影响。本文将探讨儿童社交恐惧的注意事项&#xff0c;并提供实用的建议和方法…

百面算法工程师 | YOLOv6面试考点原理全解析

本文给大家带来的百面算法工程师是深度学习目标检测YOLOv6面试总结&#xff0c;文章内总结了常见的提问问题&#xff0c;旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中&#xff0c;我们还将介绍一些常见的深度学习目标检测面试问题&#xff0c;并提供参考的回答…

压力给到 Google,OpenAI 发布 GPT-4o 来了

北京时间5月14日凌晨1点&#xff0c;OpenAI 开启了今年的第一次直播&#xff0c;根据官方消息&#xff0c;这次旨在演示 ChatGPT 和 GPT-4 的升级内容。在早些时候 Sam Altman 在 X 上已经明确&#xff0c;「我们一直在努力开发一些我们认为人们会喜欢的新东西&#xff0c;对我…

jar包安装成Windows服务

一、前言 很多年前写过一篇《使用java service wrapper把windows flume做成服务》的文章&#xff0c;也是把jar包安装成windows服务&#xff0c;今天介绍另外一种更简便的方案。 二、正片 这次使用的工具是 winsw&#xff0c;一个Windows服务包装器。下面看详细介绍 首先从g…

momentjs

Moment.js 是一个用于处理日期和时间的 JavaScript 库&#xff0c;它提供了许多方便的函数和方法来操作、格式化和解析日期时间。官网 常见用法 格式化日期时间&#xff1a;可以使用format方法将日期时间格式化为指定的字符串格式&#xff0c;例如YYYY-MM-DD HH:mm:ss。获取日…

中国CEO直播简史

图片&#xff5c;电影《教父》截图 ©自象限原创 作者丨罗辑 编辑丨程心 领导人爱对外发言这事&#xff0c;是中国的一个传统文化。 从乾隆爱往名画上盖章上&#xff0c;就可见一斑。 3Q大战时代&#xff0c;微博成了大佬“吵架”的战场&#xff0c;饭否变成了部分爱…

Digimat在电池壳体SMC复合材料成型工艺中的应用

SMC工艺介绍及挑战 SMC&#xff08;Sheet Molding Compound的缩写&#xff0c;即片状模塑料&#xff09;是一种复合材料制造工艺。该工艺可以有效地代替金属&#xff0c;实现车辆轻量化目标。该工艺不仅能够显著降低车身重量&#xff0c;而且设计灵活&#xff0c;操作简单、易…

社交媒体的探索者:探寻Facebook的发展历程

在当今数字化时代&#xff0c;社交媒体已经成为了人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为最具影响力的社交平台之一&#xff0c;其发展历程承载着无数的探索与创新。本文将深入探讨Facebook的发展历程&#xff0c;从其创立初期到如今的全球化影响&#xff0…

数据结构与算法学习笔记九---循环队列的表示和实现(C++)

目录 前言 1.为什么要使用循环队列 2.队列的顺序存储方式的实现 1.定义 2.队列初始化 3.销毁 4.清空队列 5.队列是否为空 6.队列长度 7.队头 8.入队 9.出队 10.遍历队列 11.完整代码 3.参考资料 前言 这篇文章介绍循环队列的表示和用法。 1.为什么要使用循环队…

OpenAI 重磅发布:ChatGPT Mac 桌面应用震撼上线!

OpenAI 重磅发布&#xff1a;ChatGPT Mac 桌面应用震撼上线&#xff01; 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff0…

51单片机:点亮一个LED灯

1.新建工程 选择AT89C52&#xff0c;在Atmel下显示的是See Microchip 并不需要添加启动文件到文件夹中。 添加main.c文件&#xff0c;c比cpp效率高&#xff0c;.asm汇编即更底层 程序编写好后 nop(); 该函数在这个头文件里面 #include <INTRINS.H> #include <R…

Java JDK下载安装教程(2024年)

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

2024 Google I/O Android 相关内容汇总

2024 Google I/O Android 相关内容汇总 本次 Google I/O 的核心虽然是 AI &#xff0c;但是 Android 也是作为主要议题出现&#xff0c; Android 部分可以简单分为产品和开发相关内容&#xff0c;接下来主要介绍这两部分的相关更新。 重点开始开发相关&#xff0c;内容不少 产…

业务系统加固和安全设备加固

业务系统加固 业务系统包含哪些系统? 业务系统漏洞面临的风险 1web风险 2漏洞扫描&#xff0c;端口扫描 3系统漏洞 4逻辑漏洞 5 信息泄露 6拒绝服务 7口令爆破 加固方式&#xff1a; 在风险加上修复 1web漏洞&#xff1a; 包括csrf,xss&#xff0c;口令破解等等 修…

koa2 + jsonwebtoken + koa-jwt:实现node token验证

一、koa token生成、验证 koa-jwt官网 https://github.com/koajs/jwt 推荐一个koa-jwt学习文档&#xff1a; https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html jsonwebtoken方法添加 const { sign, verify } require(jsonwebtoken); const secretKey …

ICode国际青少年编程竞赛- Python-4级训练场-列表综合练习

ICode国际青少年编程竞赛- Python-4级训练场-列表综合练习 1、 Flyer[3].step(1) Flyer[7].step(2) Flyer[11].step(1) for i in range(4):Flyer[i * 2].step(1) Flyer[8].step(3)for i in range(3):Dev.turnRight()Dev.step(-5)2、 for i in range(5):Flyer[i5].step(Flyer[…

JavaWeb--18 tlias-web-management 登录认证

登录认证 1 登录功能功能开发 2 登录校验2.1 问题分析2.2 会话技术CookieSession令牌技术 2.3 JWT令牌介绍生成和校验登录下发令牌 2.4 过滤器Filter拦截路径过滤器链 登录校验-Filter 2.5 拦截器InterceptorInterceptor详解执行流程 登录校验- Interceptor 3 异常处理3.1 当前…

【会议征稿】2024年机器人前沿技术与创新国际会议(FTIR 2024, 7/19-21)

2024年机器人前沿技术与创新国际会议&#xff08;FTIR 2024&#xff09;将于2024年7月19-21日在中国杭州举行。FTIR 2024聚焦前沿技术与创新&#xff0c;将把机器人领域的创新学者和专家聚集到一个共同的论坛。会议的主要目标是促进机器人的研究和开发活动&#xff0c;另一个目…

基于EBAZ4205矿板的图像处理:11阈值系数可调的图像局部阈值二值化

基于EBAZ4205矿板的图像处理&#xff1a;11阈值系数可调的图像局部阈值二值化 先看效果 还是一样拿我的pynq当模特&#xff0c;然后用usb——HDMI采集卡把输出图像采集到电脑上。 注意看右边mobelxtem中的通过串口调节的参数&#xff0c; 我这里是实现了阈值系数可调的局部阈…

利用CAD绘制角度斜线的简易指南---模大狮模型网

在CAD设计中&#xff0c;绘制角度斜线是常见的需求&#xff0c;尤其在工程、建筑等领域中。正确绘制角度斜线不仅可以提高图纸的清晰度和美观度&#xff0c;还有助于准确表达设计意图。本文将介绍如何利用CAD软件进行角度斜线的绘制&#xff0c;为您提供简明易懂的操作指南。 一…