WPF XAML

<Window x:Class="DManager.View.LedgerView"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Height="700"

Title="Window1">

<Grid>

</Grid>

</Window>

对于这段xaml代码

为了给同类标签中某个标签与众不同 可以给他的特征attribute赋值

非空标签 <Tag Attribute1=Value1 Attribute2=Value2>Content</Tag>

空标签 <Tag Attribute1=Value1 Attribute2=Value2 />

区分property 和 attribute

property属于面向对象,在使用面向对象思想编程时 需要对客观事物进行抽象 在把抽象出来的结果封装成类 类中用来表示事物状态的成员就是property

总结就是property(属性)时针对对象而言的 时对象的外在表现

attribute(特征)

xaml是用来在ui上控制组件的 而控件本身就是面向对象抽象的产物

xaml是一种声明式语言 当你见到一个标签 就意味着声明了一个对象

x:Class="DManager.View.LedgerView"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Height="700"

Title="Window1">

这些全是window标签的attribute

使用partial关键字,可以把一个类分拆在多处定义,只要各部分代码不冲突即可。显然,由XAML解析器生成的LedgerView类在声明时也使用了partial关键字,这样由XAML解析成的类和C#文件里定义的部分就合二为一了。正是由于这种partial机制,我们可以把类的逻辑代码留在.cs文件里,用C#语言来实现,而把那些与声明及布局UI元素相关的代码分离出去,实现UI与逻辑分离。并且,用于绘制UI的代码(如声明控件类型的字段、设置它们的外观和布局等)也不必再使用C#语言,使用XAML和XAML编辑工具就能轻松搞定。

XAML是一种声明性语言,XAML编译器会为每个标签创建一个与之对应的对象。

XAML中为对象赋值共有两种方法:

  • 使用字符串进行简单赋值
  • 使用属性元素(Property Element)进行复杂赋值

TypeConverter和TypeConverterAttribute这两个类

从TypeConverter类派生出自己的类,并重写它的一个ConvertFrom方法。这个方法有一个参数名为value,这个值就是在XAML文档里为它设置的值,我们要做的就是把这个值"翻译"成合适类型的值赋给对象的属性:

复制代码
public class StringToHumanTypeConverter : TypeConverter
{
	public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
	{
		if (value is string)
		{
			Human h = new Human();
			h.Name = value as string;
			return h;
		}
		return base.ConvertFrom(context, culture, value);
	}
}

还要使用TypeConverterAttribute这个特征类把StringToHumanTypeConverter这个类"粘贴"到作为目标的Human类上。

复制代码
[TypeConverterAttribute(typeof(StringToHumanTypeConverter))]
public class Human
 {
     public string Name { get; set; }
     public Human Child { get; set; }
 }
相关推荐
Vae_Mars15 小时前
幂等性学习笔记
笔记·学习·wpf
兰亭妙微UI设计公司16 小时前
兰亭妙微用户体验设计公司的设计细节:关于提示的那些事
ui·ux·ue
UWA17 小时前
UGUI性能排查实战:隐藏血条后耗时下降,减少顶点为何没改善
ui·性能优化·cpu·游戏开发
技术人生00120 小时前
Selenium4 Python 完整教程(适合网页自动化、页面数据采集、UI自动化测试)
python·ui·自动化
samble2 天前
从零搭建灌装监控系统(十九):单元测试实战,xUnit + 内存SQLite + 反射测试私有方法
c#·wpf·mvvm·modbus·工业控制
ndsc_d2 天前
AI生成的UI如何继续修改?画布内生成与独立AI设计工具比较
人工智能·ui·ai·ui设计·ai设计·ai设计工具·ai生成ui
理想三旬(づ ̄3 ̄)づ╭~2 天前
深入理解 AG-UI 协议:Agent 与前端实时交互的底层原理
ui
爬楼的猪2 天前
一个轻量化的Codex Web UI
人工智能·ui·chatgpt·ai编程
光泽雨2 天前
路由概念和路由事件 继承链路 RadioButton的事件解析
wpf