属性=Value形式
- 这种形式适用于对属性赋比较简单的值,例如Width=“100”或Height=“200”是xaml中属性赋值最常用的方式。比较复杂的赋值,如Path
<Path Data="M 0,0 L 200,100 L 100,200 Z" Fill="Red" Stroke="Black"/>
- 可在窗口上画出一个红色的三角形
属性标签形式
我们能发现在对属性赋值时,赋的都是字符串,但其实很多控件的属性不是string类型的,那WPF如何把赋的字符串类型转换为相应的类型呢?答案就是重写TypeConverter中的方法
在.cs文件中声明一个Human类:
1 | public class Human |
- 然后在.xaml文件中添加窗口资源,声明一个Human类:
1 | <Window.Resources> |
- 在这里Key是Human对象的索引值,当需要用到该对象时,可以用human使用此对象,后面可对human对象的属性进行赋值,由于Name属性本来就是string类型,所以直接赋值是合法的,但Child属性是Human类型,像上面那样赋值会报出类型转换的错误。想要解决这个问题就必须在.cs文件中重写类型转换方法,代码如下:
1 | [TypeConverterAttribute(typeof(NameToHumanTypeConverter))] |
- 声明一个类用来继承TypeConverter类,重写TypeConverter中的ConvertFrom方法,再使用类型转换器把该特性绑定到Human类上
标签扩展形式
- 在xaml文件中,如果属性所要赋的值很复杂的话,可以把属性以一个闭合的形式把内容包括进来,例如,定义一个应用了渐变笔刷的长方形:
1 | <Rectangle Width="200" Height="160" Stroke="Blue"> |
- 效果如下:
- 该代码可以简化成如下:
1 | <Rectangle Width="200" Height="160" Stroke="Blue" RadiusY="99.5" RadiusX="99.5"> |
- 参考资料:b站深入浅出WPF