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 分析器将调用以获取所需对象的方法。

相关推荐
大霸王龙12 小时前
系统模块与功能设计框架
人工智能·wpf
明耀1 天前
WPF DataGrid 默认显示行号
wpf
lph19721 天前
wpf的converter
wpf
fyifei05581 天前
WPF学习PropertyChanged
wpf
爱炸薯条的小朋友1 天前
C#由于获取WPF窗口名称造成的异常报错问题
windows·c#·wpf
baivfhpwxf20231 天前
wpf ListBox 去除item 单击样式
wpf
诗仙&李白1 天前
lnnovationHubTool,用prism+WPF编写的MVVM模式的快速上位机软件开发框架平台
wpf·mvvm·prism·上位机软件开发框架平台
程序员小刘1 天前
【HarmonyOS 5】教育开发实践详解以及详细代码案例
华为·wpf·harmonyos
Java Fans2 天前
在WPF项目中集成Python:Python.NET深度实战指南
python·.net·wpf
布伦鸽2 天前
C# WPF 左右布局实现学习笔记(1)
笔记·学习·c#·wpf