[.NET]XAML(1)--物件生成(4)

来源:未知 责任编辑:责任编辑 发表时间:2015-03-01 01:48 点击:

 
下面这段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>

 \

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 浅析.NET下XML数据访问新机制
  • asp.net 面试+笔试题目第1/2页
  • C# 邮件地址是否合法的验证
  • asp.net 设置GridView的选中行的实现代码
  • C#高级编程:数据库连接[1]
  • ASP.NET&#160;GridView列表代码示例
  • 经典C++程序1
  • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
  • 微软ASP.NET站点部署指南(2):部署SQL Server Compact数据库
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
Copyright © 2008-2013 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1