WPF- vs中的WPF应用项目模板 如何自己实现

embedded/2024/9/18 9:53:38/ 标签: wpf

读书笔记

1. 单个 c#文件的 空白window应用程序 (只展示了一个button按钮)

2.C#文件 和xml文件 的空白window程序  .xml文件作为程序的资源 (只一个button按钮)

3. xmal和c#共同编译 形如使用VS 创建WPF应用项目模板

1.新建一个wpf空白项目 ,添加一个主c#文件 和xaml文件(属性->生成操作-->设置为page)

在开始写代码前 ,先 手动添加 图中的引用项,
main方法类继承 window类 ,并定义为 部分类(partial)

和单纯 c#文件的空白Window程序比较 ,在类的构造函数中 没有定义button控件 ,而是使用了一个看名字是一个什么东西的初始化 方法

xaml文件如图 , 可以看到 button类在这里声明和定义了.x:class的内容 是c#中main方法 所在的类 的命名空间 类的名字....结合 这个类 是一个部分类,可以猜想到  xmal 也是在写一个部分类,不然 button 是怎么显示出来的呢?对吧

 还是和vs 的模板不一样,c#中还有太多的东西 ,是时候把Application对象也写到zaml中

增加两个文件,你知道的,一个xaml 文件 一个c#文件  ,他们都会以部分类的形式出现...

现在将Main方法 全部 注释 ,运行程序 ,非常完美的报错了.  提示没有Main方法 ,函数入口都找不到
关键的一步是: 将Application 的 xaml文件  的生成操作设置为 ApplicationDefinition
现在程序完美的启动了

 现在把Application 的c# 文件删除, 因为这里程序中好像什么都没做,同样可以运行.对的 ,不需要这个文件

 至此   我们已经手动的完成了一个WPF应用(c#)的项目模板 .
相信你有很多还不明白,因为我也不明白.但是你应该清楚了,书上说的 ,把界面抽离出来 ,是这么一个过程

从XAML 元素怎么变成的C#对象

  1. .使用无参数构造函数创建对象。(从 XAML 元素创建对象时,XAML 分析器始终使用类的无参数构造函数。不能指定其他构造函数。)
  2. 使用 XAML 元素的 content 部分设置 class 对象的 default content 属性。参考WPF中elememt的contentproperty特性-CSDN博客
  3. 将其他属性设置为在 XAML 属性中分配给的值。(这里忽略了怎么从一个字符串类型 变成 类属性真正需要的类型 ,下面介绍)

属性的类型转换器

使用 C# 创建类对象与使用 XAML 创建类对象之间存在差异

  1. 在 C# 中创建的对象具有名称。button btn=new button();   
  2. 默认情况下,在 XAML 中创建的对象没有名称。<Button>Hi There</Button>
  3. 如果需要在后台代码中操作这个xaml创建的对象 ,在xaml文件中需要这样
    <Button Name="btn">Click Me</Button>
    或者<Button x:Name="btn">Click Me</Button>

xmal中的命名空间代表着什么

就好像在c#中的using语句一样

两种形式的标记扩展markup extension的处理流程

扩展类必须派生自位于 System.Windows.Markup 命名空间中的 MarkupExtension 类。

该类必须使用 重写 名为 ProvideValue 的方法,如下面的代码所示。这是 XAML 分析器将调用以获取所需对象的方法。


http://www.ppmy.cn/embedded/103306.html

相关文章

Qt Creator 配置pcl1.14.1

1.安装pcl1.14.1 地址&#xff1a;Releases PointCloudLibrary/pcl (github.com) 下载前两个 下载完成后双击exe文件&#xff0c;修改一下安装路径&#xff0c;然后一路下一步。 OpenNI2 默认安装到C:\Program Files 下了&#xff0c;想修改OpenNI2 的安装路径&#xff0c;可…

RISC-V全志D1sCVBS套件

此开发板的任何问题都可以在我们的论坛交流讨论 https://forums.100ask.net/c/10-category/75-category/75 硬件简述 D1s主板 主板如下&#xff1a; D1s板载功能 板载功能有 XR829 WIFI蓝牙模组芯片&#xff0c;Bluetooth支持标准蓝牙与 低功耗蓝牙&#xff0c;Wifi 支持…

python数据分析——网络爬虫和API

HTML 什么是超文本标记语言&#xff1f; 它包含由标签标记的多层内容&#xff0c;包括开始标签和带有‘/’的结束标签 “head”&#xff1a;用于浏览器特定信息 “style”&#xff1a;层叠样式表&#xff08;CSS&#xff09;用于设置HTML页面的样式 “body”&#xff1a;用于…

栈与队列--python

一、栈 1、概述 一种先入后出的线性数据结构&#xff0c;类似于叠盘子&#xff0c;先放下的盘子得最后才能拿到。在最上面的盘子我们称为栈顶&#xff0c;在最底下的盘子我们称为栈底&#xff0c;将盘子添加到栈顶的操作叫做入栈&#xff0c;将盘子从栈顶抽走的操作叫做出栈。…

innovus:Create Core Rows与Cut Core Rows

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 使用cut core row与create core row可以创建一个独立的区域,如下图。方法很简单

C++ | Leetcode C++题解之第383题赎金信

题目&#xff1a; 题解&#xff1a; class Solution { public:bool canConstruct(string ransomNote, string magazine) {if (ransomNote.size() > magazine.size()) {return false;}vector<int> cnt(26);for (auto & c : magazine) {cnt[c - a];}for (auto &am…

【爬虫采集工具】用python开发的快手评论区采集软件

我用python开发了一个爬虫采集软件&#xff0c;可自动抓取快手评论数据&#xff0c;并且含二级评论&#xff01; 软件界面截图&#xff1a; 爬取结果截图&#xff1a; 软件说明: 软件运行演示视频&#xff1a; https://www.bilibili.com/video/BV1Mp421U7AM 完整讲解文章&a…

常用数据存储介质

固态硬盘&#xff08;SSD&#xff09;、移动硬盘和机械硬盘&#xff08;HDD&#xff09;是三种不同类型的存储设备&#xff0c;它们在技术、性能和用途上有所区别&#xff1a; 固态硬盘&#xff08;SSD&#xff09;&#xff1a; 存储介质&#xff1a;使用闪存&#xff08;NAND闪…

文字模型训练分析评论(算法实战)

文字模型训练&#xff0c;尤其是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;是构建能够理解、解释、生成人类语言系统的核心步骤。这类模型广泛应用于文本分类、情感分析、机器翻译、聊天机器人、摘要生成等多个方面。针对文字模型训练后的分析评论&#xff0c…

生物制药中的AI困境:创新突破还是过度炒作?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

GO异步学习

GO异步学习 文章目录 GO异步学习了解异步1. 使用 Goroutines2. 使用 Channels3. 选择语句&#xff08;Select Statement&#xff09;4. 错误处理与同步 功能特点Goroutine基本使用启动 Goroutine 使用场景**I/O 密集型任务****并行计算****处理并发请求** 注意事项**资源管理**…

springboot集成guava布隆过滤器

1.创建springboot项目&#xff0c;引入maven依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>2.创建guava布隆过滤器 Component public class Gua…

【Qt】 QComboBox | QSpinBox

文章目录 QComboBox —— 下拉框QComboBox 属性核心方法核心信号QComboBox 使用 QSpinBoxQSpinBox 属性核心信号QSpinBox 使用 QComboBox —— 下拉框 QComboBox 属性 QComboBox —— 表示下拉框 currentText ——当前选中的文本 currentindex ——当前选中的条目下标 从0开…

【已解决】win11笔记本电脑突然无法检测到其他显示器 / 无法使用扩展屏(2024.8.29 / 驱动更新问题)

我们点击 winx &#xff0c;找到设备管理器&#xff0c;查看显示适配器&#xff1a; 主要问题就出现在 NVIDIA GeForce RTX 3060 Laptop GPU 上&#xff08;虽然我把所有驱动都重新更新了一遍&#x1f62d;&#xff09;。 常用驱动更新&#xff1a; dell 驱动更新&#xff08…

ES6基础----Map的使用

目录 Map 是 Es6 新增的数据结构&#xff0c;主要用于存储键值对 1、size 属性返回 Map 的长度 2、set() 方法用于向 Map 中写入内容 ---键可以用字符串或者用其他数据类型&#xff0c;但是 Object 只能是字符串 3、get() 方法用于得到对应的值 4、delete() 方法删除对应…

岩石检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

岩石检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

Netflix Feign:微服务HTTP调用如何简化?

Netflix Feign&#xff1a;微服务HTTP调用如何简化&#xff1f; 1、什么是Netflix Feign&#xff1f;2、Feign的优点3、示例4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、什么是Netflix Feign&#xff1f; Feign是一个声明式的…

力扣862.和至少为K的最短子数组

力扣862.和至少为K的最短子数组 双端单调队列 前缀和 用单调队列存遍历过的前缀和&#xff0c;同时两个优化 1. 2. class Solution {public:int shortestSubarray(vector<int>& nums, int k) {int n nums.size(),ans n 1;long s[n1];s[0] 0L;for(int i0;i…

《C++与新兴数据库技术的完美交互:开启高效数据处理新时代》

在当今快速发展的科技领域&#xff0c;数据库技术不断推陈出新&#xff0c;为数据的存储、管理和检索带来了更高效、更灵活的解决方案。而 C作为一种强大的编程语言&#xff0c;如何更好地与新兴的数据库技术进行交互&#xff0c;成为了众多开发者关注的热点问题。 一、新兴数…

【Grafana】通过api请求Grafana Datasource获取数据

可以通过api请求Grafana Datasource获取数据&#xff0c;以此解决一部分想从Grafana获取数据的需求&#xff08;有毒的需求&#xff09;,按道理说应该通过脚本或程序直接从数据源中获取。 实现方式 Grafana开启了匿名访问后&#xff0c;F12刷新页面&#xff0c;查看面板的实际访…