[.NET]XAML(1)--物件生成(4)
下面这段XAML,采用Property-Element来设定TextBlock对象的Foreground属性。而TextBlock对象的Foreground属性,是一个型别为Brush的对象属性。所以在Property-Element里采用Object-Element来生成要设定给Foreground属性的一个Brush对象。
<TextBlock x:Name="ShowTextBlock" Text="Hello World" FontSize="72">
<TextBlock.Foreground>
<SolidColorBrush Color="#FF0000" />
</TextBlock.Foreground>
</TextBlock>
仔细看上面的范例,会发现并不是生成一个Brush对象,而是生成Brush的延伸对象SolidColorBrush。这是因为Brush对象是一个抽象类,并没有办法直接生成。所以只能生成延伸自Brush的SolidColorBrush来当作Foreground属性的对象。这也就是说,我们可以生成延伸类别来设定对象属性。这是一个面向对象开发很重要的功能,提供了开发人员抽换对象的能力,大幅增加系统对象的弹性。
Property-Element-Collection
既然一般对象的属性不单纯是int、double这些实值型别,有可能是一个对象(Class)、一个结构(Struct)。就免不了的对象的属性,也有可能是对象、结构的集合(Collection)。Property-Element另外也定义了,可以使用多个Object-Element来当作内容来解决这个问题。.NET在剖析Property-Element的时候,会将多个Object-Element内容反射生成出对应的对象,并且加入对象的对象集合属性。
下面这段XAML,采用Property-Element来设定LinearGradientBrush对象的GradientStops属性。而LinearGradientBrush对象的GradientStops属性,是一个GradientStop型别的对象集合属性。所以在Property-Element里采用多个Object-Element,来生成要设定给GradientStops属性的多个GradientStop对象。
<TextBlock x:Name="ShowTextBlock" Text="Hello World" FontSize="72">
<TextBlock.Foreground>
<LinearGradientBrush StartPoint="0,1" EndPoint="1,0" >
<LinearGradientBrush.GradientStops>
<GradientStop Color="#FF0000" Offset="0.0"/>
<GradientStop Color="#00FF00" Offset="0.5"/>
<GradientStop Color="#0000FF" Offset="1.0"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
相关新闻>>
- 发表评论
-
- 最新评论 更多>>