ZZ:使用.NET语言开发Silverlight应用程序入门(二):界面和对象模型

ASP.NET与Silverlight时钟项目源码解析 本文还有配套的精品资源,点击获取 简介:ASP.NET结合Silverlight技术实现了一个实时更新用户界面的时钟应用。Silverlight是微软推出的RIA平台,支持丰富的图形、多媒体和交互性。本源码包含关键知识点:Silverlight基础、XAML语法、C#编程、数据绑定、动画和时序、事件处理、生命周期和部署测试。虽然Silverlight已不再活跃,但其技术仍影... 阅读详情
(本文转载自Silverlight上海开发团队Blog,是“使用.NET语言开发Silverlight应用程序入门”系列之第二篇。转自http://blog.youkuaiyun.com/SilverlightShanghai/archive/2007/09/28/1805279.aspx. 如果有对于Silverlight技术本身的疑问,看法,意见,建议,或者是对于希望看到Blog的内容有建议,请访问 http://blog.youkuaiyun.com/SilverlightShanghai,留下你的宝贵意见)

Silverlight是用XAML语言来描述界面的。XAML是eXtensible Application Markup Language的缩写,也就是可扩展的应用程序标记语言。在WPF(Windows Presentation Foundation)中,第一次出现了XAML,用来描述.NET语言。而Silverlight中的XAML只用来对用户界面作出统一的描述,弥补 HTML/CSS等在界面定制上的不足,并使开发人员和设计人员可以运用同一种语言进行交流,减少额外的工作量。因此,Silverlight XAML的语法相对WPF中的XAML相对要简单一些,也更容易上手。

虽然我们可以使用Microsoft Expression Studio的视觉化方式设计界面,但是了解XAML的基本语法可以帮助我们更好的定制自己的界面。如果想要直接编写XAML,使用Visual Studio 2008则可以提高编写的效率,因为里面有自动感应功能(Intellisense)。

2. Canvas容器<Canvas />和各种元素

任 何Silverlight应用程序的界面描述都是以一个叫Canvas(画布)的容器为根开始的。当我们在Microsoft Expression Blend或者Visual Studio 2008中创建一个新的Silverlight项目后,总会生成一个只包含根Canvas的.xaml文件,如下所示:

< Canvas  x:Name ="parentCanvas"
xmlns
="http://schemas.microsoft.com/client/2007"  
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"  
Loaded
="Page_Loaded"  
x:Class
="SilverlightTestProject.Page;assembly=ClientBin/SilverlightTestProject.dll"
Width
="640"
Height
="480"
Background
="White" >

</ Canvas >

 任何元素都必须添加在这个根Canvas容器的里面,因为一个界面里只能有一个这样的根Canvas容器。我们可以在这个根容器里加入子容器或者其他元素。每个元素都有一个标签相对应。比如在子容器中添加一个矩形,并在根容器中添加一个椭圆形:

< Canvas  x:Name ="parentCanvas"
xmlns
="http://schemas.microsoft.com/client/2007"  
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"  
Loaded
="Page_Loaded"  
x:Class
="SilverlightTestProject.Page;assembly=ClientBin/SilverlightTestProject.dll"
Width
="640"
Height
="480"
Background
="White" >

    
< Canvas >
        
< Rectangle ></ Rectangle >
    
</ Canvas >

    
< Ellipse ></ Ellipse >

</ Canvas >

Silverlight定义的常见的几何图形包括矩形<Rectangle />,椭圆<Ellipse/>,直线<Line />,多边形<Polygon />,多叉线<PolyLine />(不封闭的折线),路径<Path />(可以画出任意的形状和线条,比如不封闭的曲线),等等。<TextBlock />允许我们定制显示在界面上的文字。  

3. 附加元素属性

尝试以上代码,可以发觉我们其实看不到任何我们想要的性状,因为它们的默认的大小属性均为0。可见,仅使用这些元素标签还不足以得到我们想要得形状,我们需要在标签中设置它的属性值,确定它的大小、位置等等。

观察根Canvas,我们已经可以了解到一些属性的定制,比如只在根节点出现的定义xml名字空间(xmlns)以及自定义的xml名字空间(xmlns:x)。其中还有一些常用的属性,如宽(Width),高(Height)。在Canvas中,这两个属性既可以用像素值来表示,也可以用百分比来表示。x:Name表示该元素示例的名称,有了这个名称,我们就可以在.NET代码中操作这个元素示例。Background属性设置了背景的颜色,不设置这个值,则该元素透明。

每个元素都有属于自己的一组属性。比如,我们可以将刚才的代码改进一下:

< Canvas  x:Name ="parentCanvas"
xmlns
="http://schemas.microsoft.com/client/2007"  
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"  
Loaded
="Page_Loaded"  
x:Class
="SilverlightTestProject.Page;assembly=ClientBin/SilverlightTestProject.dll"
Width
="640"
Height
="480"
Background
="White" >
    
    <Canvas x:Name="subCanvas" Canvas.Left="123" Canvas.Top="117" Width="53" Height="39">
    
< Ellipse  Fill ="Yellow"  Height ="100"  Width ="200"  StrokeThickness ="2"  Stroke ="Black" />
</ Canvas >

< Rectangle  x:Name ="myRect"  Canvas.Top ="20"  Canvas.Left ="20"  Width ="100"  Height ="100"  Fill ="Blue"  Stroke ="Red"  StrokeThickness ="3"   />

</
Canvas >

则可以看到以下效果:

 通过属性定制元素

其中Fill指定了填充色,Stroke和StrokeThickness定制了形状的轮廓线条的颜色和粗细。我们可以看到根Canvas下的子元素(包括子容器Canvas)的位置属性均表示相对上一级Canvas的坐标位置。值得注意的是这里虽然矩形myRect超出了subCanvas定义的边界范围,但它并不会被subCanvas剪裁,且仍属于subCanvas中的元素。

顺便一提,目前我们只有Canvas一种容器,在不久的将来,Silverlight将会提供更多的容器,使布局管理更方便。

4. 对象模型

在WPF中,XAML是.NET代码的xml表现形式;而在Silverlight中,我们同样有与XAML相对应的.NET语言编程方式。其中,每一个元素对应一个对象,元素属性在其.NET对象中都有对应的属性。例如先前一个例子中的矩形就可以用以下C#语言来表示:

Rectangle myRect = new  Rectangle();
myRect .SetValue(Canvas.TopProperty, 
117
);
myRect .SetValue(Canvas.LeftProperty, 
123
);

myRect .Width 
= 100
;
myRect .Height 
= 100
;

SolidColorBrush brushBlue 
= new
 SolidColorBrush();
brushBlue.Color 
=
 Colors.Blue;
myRect .Fill 
=
 brushBlue;

SolidColorBrush brushRed 
= new
 SolidColorBrush();
brushRed.Color 
=
 Colors.Red;
myRect .Stroke 
=
 brushRed;

myRect .StrokeThickness 
= 3;

 这里SolidColorBrush对象派生自Brush,是画刷的一种。Silverlight里定义了好几种不同的画刷对图形进行填充。属性Fill的默认画刷是SolidColorBrush,因此可以在.xaml文件中可以直接给Fill属性赋值,但在.NET语言中则必须明确指出画刷的类型。有关画刷的具体内容我们会在以后介绍。

刚才用C#定义出来的矩形还是独立的,如果要把它在界面上表示出来,则需要在其后加上下面这句代码将矩形加入上一级Canvas中:

Children.Add(myRect);

5. 参考资料

Silverlight构建图形化流程设计器代码. 立即下载

相关推荐

Silverlight教程之打印报表和图形

Silverlight4[1].0教程之打印报表和图形

Silverlight 简介

Silverlight 简介 Microsoft® Silverlight 是Microsoft® 公司在.NET Framework平台上实现为Web和移动设备构建和显示下一代多媒体体验和丰富的交互式应用程序(RIA)的一种跨浏览器、跨平台的插件。Silverlight技术是一种新的Web表现层技术,其跨平台的用户体验和可扩展的编程模型分别起到了统一了服务器、Web 和桌面和统一托管代码

狼の禅境 4491

.net silverlight的用法

asp.net silverlight技术最新最全的案例

.net笔记2:关于Silverlight

Silverlight 微软Silverlight是一个跨浏览器、跨客户平台的技术,能够设计、开发和发布有多媒体体验与富交互(RIA,Rich Interface Application)的网络交互程序。 因为Silverlight提供了一个强大的平台,能够开发出具有专业图形、音频和视频的Web应用程序,增强了用户体验,所以SilverLight吸引了设计人员和开发人员的眼球。同时,Silv

柏图 2161

DSMA时序修复避坑指南:当Setup和Hold互卡时,除了调Margin还能做什么?

本文深入探讨DSMA时序修复中的Setup与Hold互锁问题,提供7种高阶策略,包括优先级判断、高级参数组合、单元类型智能替换等,帮助工程师突破时序收敛瓶颈。特别针对fix_eco_timing命令的隐藏参数和物理协同优化进行详细解析,助力芯片设计实现时序收敛。

weixin_30162121的博客 294

OCR开发车架号识别vin码识别系统

一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车

OCR13512721355的博客 1433

一起谈.NET技术,Silverlight 应用整合

  Silverlight与企业信息化   在企业应用系统中,企业客户不在满足于呆板的Portal、树形结构、数据堆积的表格和满屏的文字描述。企业客户越来越倡导用户体验,Silverlight迎合了这种需求,实现了炫目的体验和丰富交互的应用,更重要的是Silverlight更适合企业应用系统的开发,依靠.Net平台,使用C#高级语言代替JavaScript脚本语言,实现了强大的客户端计算能力、支持...

weixin_33774883的博客 162

十一种室内定位传感器方案汇总介绍与对比(机器人、物联网领域)

室内定位传感器方案汇总 目录 室内定位传感器方案汇总 1、定位方案概述 1.1、内定位系统有最基本的5种算法: 1.2、常用的室内定位技术主要包括以下几种: 1.3、定位理论 1.4、不同的定位方案对比 2、各种定位方案详细介绍 2.1、单线激光定位 2.2、多线激光定位: 2.3、视觉定位: 2.4、基于射频识别(RFID)技术室内定位 2.4.1、RFID标签(不涉及...

JK-Cool的博客 3万+

使用.NET语言开发Silverlight应用程序入门(三):画刷和变形

前一阵子因为忙着TechED以及项目开发,很久没有到上面来踏一脚 。今天忙里偷闲,让我们继续我们的用.NET开发Silverlight应用程序的入门系列。今天的主题比较简单,也是最后一个和XAML直接相关的主题:Silverlight中不同类型的画刷和变形。因为这两个属性变化多端,进一步了解一下可以帮助我们更好的理解Silverlight中的XAML。A. 画刷(Brush)画刷用于对图形

CLR & Silverlight上海研发团队Blog 2423

多传感器标定:如何统一摄像头、雷达与IMU坐标?

多传感器标定:如何统一摄像头、雷达与IMU坐标?​ ,人工智能,计算机视觉,大模型,AI,本文详细阐述多传感器标定中统一摄像头、雷达与 IMU 坐标的方法。先介绍传感器坐标系统、坐标统一必要性及变换数学基础,再分述摄像头与雷达、IMU 与摄像头、IMU 与雷达的标定原理、步骤、参数计算及结果验证,还讲解了多传感器坐标统一的整体流程,分析了标定常见问题及解决办法,介绍了常用标定工具,结合实际案例说明应用,探讨了标定精度的影响因素、提升方法及发展趋势,为相关领域提供了全面的多传感器标定指导。​

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 12万+

173、NPU的编译器开发:开源社区贡献指南

本文分享了在NPU编译器开源社区贡献的经验心得。作者通过实际案例(如卷积维度错误、NaN输出等)阐述了NPU编译器开发的特殊性:硬件迭代快、边界条件复杂、厂商代码不可全信。提出有价值的贡献应聚焦硬件适配测试、性能剖析工具和反模式文档三类内容。强调用实测数据沟通、主动承担维护责任、保持代码通用性等社区协作技巧,并建议通过RFC提前沟通、附硬件实测数据等方式提高PR通过率。最后指出,NPU编译器开发是与聪明人共同填坑的过程,鼓励开发者提交"有诚意的代码"而非完美代码。

m0_50546716的博客 35

使用.NET语言开发Silverlight应用程序入门(二):界面和对象模型

1. XAML:用来描述界面的语言 Silverlight是用XAML语言来描述界面的。XAML是eXtensible Application Markup Language的缩写,也就是可扩展的应用程序标记语言。在WPF(Windows Presentation Foundation)中,第一次出现了XAML,用来描述.NET语言。而Silverlight中的XAML只用来对用户界面作出统一

CLR & Silverlight上海研发团队Blog 5234

Android13无重力感应系统修改触摸屏跟随屏幕显示旋转方向旋转

在实际产品中设计时会移除重力传感器。当设备缺少重力传感器时,系统无法使用该传感器提供的方向数据来确定屏幕旋转的方向。Android 系统中由于移除重力传感器导致的默认显示方向旋转引起触摸屏与屏幕显示不一致问题,主要是由于缺乏方向检测和触摸坐标的正确转换。通过使用替代传感器(如陀螺仪)、手动配置方向、调整触摸事件坐标和 UI 布局,可以解决这个问题。开发者需要确保在设备没有重力传感器的情况下,能够通过其他方法推测方向,并确保触摸事件和 UI 动作能够正确响应设备的旋转。

weixin_35723192的博客 802
上一篇: ZZ:使用.NET语言开发Silverlight应用程序入门(一):了解项目结构
下一篇: .NET SDK中CorFlags.Exe的用法
ATField
博客等级 码龄25年 673粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值