[一] XMAL 为对象属性赋值的几种方式
作者:互联网
[一] XMAL 为对象属性赋值
所有内容均出自于《深入浅出WPF》一书,其作者在b站也有相关视频,本文为个人读后总结,仅供参考
Attribute: 属性,特征,泛指,抽象,行为,动词
Property: 属性,具体,名词
eg: 汽车的属性(attribute)之一是速度(Property)
1. 使用标签的 Attribute 为对象属性赋值 (标签 - 值)
<Button Content="BT" Width="30" Height="20"/>
直接使用 Attribute = Value,简单直接,但是由于 XAML 语法限制,value 只能是字符串,出现两个问题
-
字符串和实际属性之间的转换,需要为这些属性准备转换器,上图是因为 wpf 已经为我们做好了相关工作
-
如果对象十分复杂,那对应的字符串也会变复杂,在没有编码辅助的前提下,对使用者十分不友好
解决:
- 继承 TypeConverter ,在里面重写对应的转换方法
- 使用属性 - 元素
2. 属性 - 元素
空标签:
<Button Width="30" Height="20"/>
非空标签:
<Button Width="30" Height="20"> </Button>
**元素:**子级标签是父标签的一个元素
属性-元素:父标签下的一个子标签对应一个属性 ,以元素的形式表示实例属性
<Button Width="30" Height="20">
<Button.Content>BT</Button.Content>
</Button>
属性 - 元素,在对象较为复杂时使用效果最佳,可以通过嵌套降低复杂度,类似于代码中的 . 号,a.b.c.d(),如果用字符串表示,那这个字符串就相当长了
<Button Width="30" Height="20">
<Button.Content>
<TextBlock>
<TextBlock.Text>
hello
</TextBlock.Text>
</TextBlock>
</Button.Content>
</Button>
3. 标记 - 扩展
前面的两种只是对属性生成新对象并赋值,如果我们需要把一个属性赋值给另一个,或者两个属性使用同一个对象等,花里胡哨的操作,那就需要 标记 - 扩展
顾名思义,标记就是对属性打个标签,表示我要使用 标记 - 扩展了,扩展就是对当前属性进行扩展,在原有基础上,模子上增删改
<Button Width="30" Height="20" Content="{StaticResource st}"/>
规范:使用花括号表示使用标记-扩展了,内部书写对应的扩展代码,编译器会解析内部的扩展语法
content 属性接受一个字符串,{StaticResource st} 只要满足返回的是一个字符串就可以成立
可以使用的标记扩展:
System.Windows.Media.Imaging.ColorConvertedBitmap;
System.Windows.Data.BindingBase;
System.Windows.Data.RelativeSource;
System.Windows.DynamicResourceExtension;
System.Windows.Markup.ArrayExtension;
System.Windows.Markup.NullExtension;
System.Windows.Markup.StaticExtension;
System.Windows.Markup.TypeExtension;
System.Windows.ResourceKey;
System.Windows.StaticResourceExtension;
System.Windows.TemplateBindingExtension;
System.Windows.ThemeDictionaryExtension;
1.标记扩展可以嵌套 {binding { binging }}
2.标记扩展可以简写
3.标记扩展类以 Extension 为后缀,使用时可以省略
标签:XMAL,标记,Windows,标签,扩展,System,赋值,属性 来源: https://blog.csdn.net/qq_42733641/article/details/115438275