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; }
 }
相关推荐
lsp程序员0108 小时前
使用 Web Workers 提升前端性能:让 JavaScript 不再阻塞 UI
java·前端·javascript·ui
咖啡の猫15 小时前
PC 端常用 UI 组件库
ui
我的xiaodoujiao16 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 25--数据驱动--参数化处理 Excel 文件 2
前端·python·学习·测试工具·ui·pytest
top_designer21 小时前
Firefly 样式参考:AI 驱动的 UI 资产“无限”生成
前端·人工智能·ui·aigc·ux·设计师
Macbethad1 天前
使用WPF编写一个读取串口的程序
wpf
Macbethad2 天前
如何用WPF做工控设置界面
java·开发语言·wpf
Dr.勿忘2 天前
Unity一分钟思路---UI任务条:宝箱位置如何准确卡在百分比位置上
ui·unity·游戏程序·屏幕适配
csdn_aspnet2 天前
WPF 做一个简单的电子签名板(一)
c#·wpf
玖笙&2 天前
✨WPF编程进阶【7.2】:动画类型(附源码)
c++·c#·wpf·visual studio
·心猿意码·2 天前
WPF中TemplatePart机制详解
wpf