WPF- vs中的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.rhkb.cn/news/412333.html

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

相关文章

手算神经网络MAC和FLOP

在本文中&#xff0c;我们将深入探讨神经网络背景下的 MAC&#xff08;乘法累加运算&#xff09;和 FLOP&#xff08;浮点运算&#xff09;概念。通过学习如何使用笔和纸手动计算这些内容&#xff0c;你将对各种网络结构的计算复杂性和效率有基本的了解。 这是 colab 笔记本中…

Java语言程序设计基础篇_编程练习题*17.13 (带GUI的组合文件工具)

目录 题目&#xff1a;*17.13 (带GUI的组合文件工具) 代码示例 结果展示 题目&#xff1a;*17.13 (带GUI的组合文件工具) 改写编程练习题17.12使之带有GUI&#xff0c;如图1721b所示 可以使用编程练习题17.11的GUI代码和编程练习题17.12的程序代码&#xff1a; Java语言…

linux系统使用 docker 来部署运行 mysql5.7 并配置 docker-compose-mysql.yml 文件

Docker是一个开源的容器化平台&#xff0c;旨在简化应用程序的创建、部署和管理。它基于OS-level虚拟化技术&#xff0c;通过将应用程序和其依赖项打包到一个称为容器的标准化单元中&#xff0c;使得应用程序可以在任何环境中快速、可靠地运行。 Docker的优势有以下几个方面&a…

SpringMVC 笔记篇

1.1 执行流程 1.1.5 DispatcherServlet的init()——> 创建Spring容器 ——> initStrategies()方法 在1.1.4中DispatcherServlet中的init()方法创建Spring容器之外&#xff0c;其实还会做一件特别重要的事&#xff0c;在FrameworkServlet中的refresh()方法执行之前&…

景联文科技提供运动数据采集服务

运动数据的重要性 运动数据的收集与分析对于提升个人健康管理和运动表现具有重要意义。 通过收集心率、步态、速度等生理和运动参数&#xff0c;不仅可以为运动员提供个性化的训练方案&#xff0c;帮助其优化表现&#xff0c;还能早期发现并预防伤病。对于普通健身者而言&…

CSS溢出——WEB开发系列20

在网页设计中&#xff0c;“溢出”是一个常见且重要的概念。它涉及到如何处理那些超出预定范围的内容&#xff0c;以确保网页的布局和视觉效果达到预期。 一、什么是溢出&#xff1f; 在 CSS 中&#xff0c;“溢出”&#xff08;overflow&#xff09;指的是内容超出其包含块的…

python-pptx - Python 操作 PPT 幻灯片

文章目录 一、关于 python-pptx设计哲学功能支持 二、安装三、入门1、你好世界&#xff01;例子2、Bullet 幻灯片示例3、add_textbox()示例4、add_picture()示例5、add_shape()示例6、add_table()示例7、从演示文稿中的幻灯片中提取所有文本 四、使用演示文稿1、打开演示文稿2、…

Marscode:程序员的智能伙伴,2024 活动震撼来袭

在程序员的世界里&#xff0c;高效的开发工具如同手中的利器&#xff0c;能让我们在代码的海洋中披荆斩棘。今天&#xff0c;我要向大家隆重介绍一款强大的智能开发工具——Marscode&#xff0c;以及它带来的精彩 2024 活动。 一、Marscode&#xff1a;智能开发的新势力 Mars…

SQLite的安装和使用

一、官网链接下载安装包 点击跳转 步骤&#xff1a;点击安装这个红框的dll以及红框下面的tools &#xff08;如果有navicat可以免上面这个安装步骤&#xff0c;安装上面这个是为了能在命令行敲SQL而已&#xff09; 二、SQLite的特点 嵌入的&#xff08;无服务器的&#x…

【机器学习】 7. 梯度下降法,随机梯度下降法SGD,Mini-batch SGD

梯度下降法,随机梯度下降法SGD,Mini-batch SGD 梯度下降法凸函数(convex)和非凸函数梯度更新方向选择步长的选择 随机梯度下降SGD(Stochastic Gradient Descent)梯度下降法&#xff1a;SGD: Mini-batch SGD 梯度下降法 从一个随机点开始决定下降方向&#xff08;重要&#xff…

基于PHP+MySQL组合开发的微信投票小程序 带完整的安装代码包以及搭建教程

系统概述 这款基于 PHPMySQL 组合开发的微信投票小程序是一款专门为满足各类投票需求而设计的应用程序。它利用 PHP 强大的服务器端编程能力和 MySQL 高效的数据存储和管理能力&#xff0c;为用户提供了一个稳定、可靠、功能丰富的投票平台。 该小程序支持多种投票类型&#…

centos安装docker并配置加速器

docker安装与卸载&#xff1a; 1、检查当前是否安装docker yum list installed | grep docker2、卸载docker 根据yum list installed | grep docker查询出来的内容&#xff0c;逐个进行删除 yum remove docker.x86 64 -y3、启动与关闭docker 4、删除/etc/docker文件夹 如果…

jmeter 响应乱码

Jmeter在做接口测试的时候的&#xff0c;如果接口响应的内容中有中文&#xff0c;jmeter的响应内容很可能显示乱码&#xff0c;为了规避这种出现乱码的问题&#xff0c;就要对jmeter的响应结果进行编码处理。 打开jmeter进行接口、压力、性能等测试&#xff0c;出现以下乱码问…

Java短剧系统新生态智能系统打造个性化影视体验小程序源码

短剧新生态&#xff0c;智能系统打造个性化影视体验✨&#x1f3ac; &#x1f389; 开篇&#xff1a;短剧新纪元&#xff0c;个性化体验来袭 在这个快节奏的时代&#xff0c;短剧以其精炼的剧情和高效的传播力&#xff0c;正逐渐成为影视娱乐的新宠儿&#xff01;&#x1f38…

如何恢复删除的微信好友?不留遗憾,这5招教你找回

在社交生活中&#xff0c;微信成为了我们日常沟通的重要工具之一。然而&#xff0c;偶尔因一时冲动或误操作删除了重要好友&#xff0c;当我们想找回好友时是否也在懊悔呢&#xff1f;如何恢复删除的微信好友就成为了我们必须学会的技能。那么&#xff0c;今天我们就来分享5种高…

10、ollama启动LLama_Factory微调大模型(llama.cpp)

在前面章节中介绍了如何使用LLama_Factory微调大模型&#xff0c;并将微调后的模型文件合并导出&#xff0c;本节我们我们看下如何使用ollama进行调用。 1、llama.cpp LLama_Factory训练好的模型&#xff0c;ollama不能直接使用&#xff0c;需要转换一下格式&#xff0c;我们…

STM32G474之TIM1更新中断

STM32G474之TIM1能产生如下的中断&#xff1a; 1、捕获比较1个事件&#xff08;Capture compare 1 event&#xff09; 用来获取“捕获输入脉冲的时间”&#xff0c;其次用来输出“比较输出波形”&#xff1b; 2、捕获比较2个事件&#xff08;Capture compare 2 event&#x…

【HTML源码】上传即可使用的在线叫号系统源码

这个叫号系统的过程是这样的 接了一个任务&#xff0c;某学校要对学生进行逐个面试&#xff0c;希望能有类似医院门诊那种叫号系统。 条件&#xff1a;首先说硬件&#xff0c;就是教室里边一台笔记本电脑&#xff0c;同屏到教室外面的电视机。 需求&#xff1a;软件需求是可…

如何解决U盘无法压缩卷或删除卷的问题

U盘在日常使用中&#xff0c;偶尔会遇到无法压缩卷或删除卷的情况。出现这些问题通常与U盘的磁盘状态或文件系统有关。本文将介绍一种有效的解决方法&#xff0c;通过使用Windows自带的磁盘管理工具diskpart来解决这些问题。 一、问题原因 U盘无法压缩卷或删除卷的常见原因包…

扩博智能× Milvus:图像检索助力零售商品图像高效标注

大家好&#xff0c;我是上海扩博智能技术有限公司的Frank&#xff0c;负责算法工程相关的工作。很高兴能在 Milvus 社区和大家分享我们在图像检索方面的经验。 01 扩博智能公司简介 扩博智能 Clobotics 成立于 2016 年&#xff0c;总部位于上海长宁。我们聚焦计算机视觉和机器学…