当前位置: 首页 > article >正文

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.kler.cn/a/281841.html

相关文章:

  • 【Pythonr入门第二讲】你好,世界
  • 2021 年 9 月青少年软编等考 C 语言三级真题解析
  • 信息与决策支持系统(Information and Decision Support Systems,IDSS)
  • k8s上部署redis高可用集群
  • 力扣-Mysql-3322- 英超积分榜排名 III(中等)
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Share Kit
  • 关于 etcd lease,以下说法正确的是?
  • golang学习笔记——grom连接mysql
  • C++day2
  • 【计算机网络】名词解释--网络专有名词详解
  • CRMEB 开源商城系统研究报告
  • Pytorch构建网络模型结构都有哪些方式
  • 买了服务器后如何正确挂载数据盘|什么是系统盘,什么是数据盘
  • 33.鼠标悬停时的波浪线效果 CSS 重置
  • FLUX 1 将像 Stable Diffusion 一样完整支持ControlNet组件
  • JavaScript异步编程中的常见陷阱与解决方案
  • YASKAWA机器人维修操作命令攻略-移动命令运用案例
  • jupyter notebook修改默认浏览器(改chrome)
  • 深度学习学习经验——长短期记忆网络(LSTM)
  • 爆改YOLOv8 | yolov8添加MSDA注意力机制
  • 代码随想录算法训练营第五十五天 | 图论part05
  • 怎么整合spring security和JWT
  • eclipse 配置 ABAP 连接操作手册
  • 北摩高科半年度军航民航双突破,技术创新引领行业发展
  • Ubuntu 22.04上稳定安装与配置搜狗输入法详细教程
  • C#入门篇5