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; }
 }
相关推荐
jz_ddk5 小时前
[LVGL] 从0开始,学LVGL:基础构建篇 - 掌握UI的核心构建块
linux·网络协议·ui·rpc·嵌入式·gui·lvgl
Rhys..5 小时前
python自动化中(包括UI自动化和API自动化)env的作用和使用
python·ui·自动化
尤老师FPGA10 小时前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第三十二讲)
android·java·ui
Larry_Yanan19 小时前
QML学习笔记(三十四)QML的GroupBox、RadioButton
c++·笔记·qt·学习·ui
The Sheep 202321 小时前
WPF自定义路由事件
大数据·hadoop·wpf
阳光雨滴21 小时前
使用wpf用户控件编程落石效果动画
c++·wpf
wuty0071 天前
WPF 调用 ChangeWindowMessageFilterEx 修改指定窗口 (UIPI) 消息筛选器的用户界面特权隔离
wpf·sendmessage·changewindowmessagefilterex·uip·消息筛选器的用户界面特权隔离·window message
攻城狮CSU1 天前
WPF中核心接口 INotifyPropertyChanged
wpf
c#上位机1 天前
wpf之Interaction.Triggers
c#·wpf
是木子啦1 天前
wpf passwordbox控件 光标移到最后
c#·wpf