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;并提供实用的建议和方法…

jvm故障定位

​ cpu使用率低负载高&#xff0c;原因分析-----举例命令排查过程 原因&#xff1a;大量线程io阻塞。 建议从以下几个方面排查代码问题&#xff1a; 1、是否有内存泄露导致频繁GC 2、是否有死锁发生 3、是否有大字段的读写 4、会不会是数据库操作导致的&#xff0c;排查SQL语…

百面算法工程师 | 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;饭否变成了部分爱…

解释Java中的动态代理(Dynamic Proxy)及其用例

在Java中&#xff0c;动态代理&#xff08;Dynamic Proxy&#xff09;是一种在运行时动态创建代理类和对象的机制。它允许你在不改变原有类代码的前提下&#xff0c;通过代理类对原有类的方法增加额外的处理逻辑&#xff08;如安全检查、事务处理、日志记录等&#xff09;&…

在为法人主体添加平衡段值时选不到相应的平衡段值

1、在为H1038公司添加平衡段值时&#xff0c;值集列表中无法选到需要的平衡段值&#xff0c;进一步对其后台取值逻辑进行分析 SELECT *FROM (SELECT FLEXVALUES.FLEX_VALUE, FLEXVALUES.DESCRIPTIONFROM FND_FLEX_VALUES_VL FLEXVALUESWHERE FLEXVALUES.FLEX_VALUE_SET_ID :1…

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

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

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

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

第 8 章 机器人底盘Arduino端电机驱动(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.4 底盘实现_03Arduino端电机驱动 自定义电机驱动的实现与上一节的编码器驱动流程类似&#xff1a; ROSA…

终于知道公司薪资为什么保密了!无意中拿到了部门薪资列表,自己身为小组长,只有28k,手下好几个35k左右,心态崩了

大家好&#xff0c;我是瑶琴呀。 一直以来&#xff0c;员工不能私下谈论薪资是职场公开的规定&#xff0c;入职的时候&#xff0c;HR 也会要求每个员工在保密薪资文件上签字。 记得在大学上职业规划课的时候&#xff0c;当时老师就给我们讲过一个案例&#xff0c;公司里小李和…

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

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

详细分析Vue3中的defineExpose(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 其基本知识可参考官网&#xff1a;Vue3中的defineExpose 1. 基本知识 defineExpose 是 Vue 3 的 Composition API 中一个新的实用函数&#xff0c;用于在 <script setup> 语法下显式暴露组件的公共属性和方法 这在处理子组件…

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;口令破解等等 修…