欢迎投稿

今日深度:

用SQL Server和XML学习Silverlight 2(1)(2)

Beta软件免责声明

这个项目最初是由Silverlight 2 beta 1构建的,与所有beta程序一样,后面的发行版包括的重大改变将会使修改用早期版本构建的程序非常痛苦,按照墨菲定律,Silverlight 2 beta 2恰好在本文按预定日期发布后的几天就发布了,因此我们对代码也包括本文)进行适当的修改,以保证完全兼容Silverlight 2 beta 2。

从好的方面来看,后面的版本会修复发现的问题,如为用户登记使用文本框的弹出窗口异常http://www.devx.com/RIA/link/38139),记得将来Silverlight 2更新后回来这里检查项目的更新。

使用beta软件的另一个问题是它不会总是按照想要的那样精确地工作,例如:参考由Michael Sync, Shawn Wildemuth和Delay写的文章列出的beta1中的问题,Silverlight Beta 2问题可以在Silverlight论坛http://www.devx.com/RIA/link/38264)去寻找,在Scott Guthrie的Silverlight Beta 2邮件列表中的注释部分也能找到,在Tim Anderson的博客Upgrading to Silverlight 2, Silverlight, VS Setup Hassles http://www.itwriting.com/blog/?p=664】)中也有提及。

我们发现使用Silverlight 2是非常有益的,毫无疑问,这是一项非常有前途的技术,目前微软公司也是加大力度在这方面的投入和研究,预计下一个版本将会包括上百个新的控制,在北京20008夏季奥运会期间Silverlight的市场将会呈爆炸性增长,NBC已经决定使用Silverlight技术在他的网站上展示交互式视频。如果你关注你作为一名程序员未来的市场前景,那么请尽早学习Silverlight技术是一个重要的战略。

布局&UI设计

我们通过选择模仿标准水印设计而不是早期的XBAP设计开始我们的布局设计,虽然在Visual Studio 2008中对XMAL设计做了大量改进,我们发现在布局设计时混合表达式Expression Blend)还是必需的,此时采用VS 2008进行布局设计最主要的麻烦是它的XMAL设计器是只读的,不能从工具箱进行拖拉操作,一旦你放到某个位置后就不能再移动了,这个问题预计在不久的将来发布SP1时可能修复,在这个项目中使用Blend非常容易,但是在编写或编辑XMAL本身时,VS 2008的智能感应是一个巨大的优势,说不定这个功能将来就会包括在某个Blend发行版中。

我们在构建标准水印项目时,Silverlight 1.0中可用的控制集不包括Border,因此我们不得不使用Line来描述图像的控制,在Silverlight 2中,我们终于可以使用Border了,可比使用Line简单多了。
Silverlight 2 Border示例

<Border Grid.Row="2" Grid. Column="2" Width="160" BorderBrush="Black"  
BorderThickness
="1,1,2,1" >

    < Grid>
<!-- Black -->

        <  Image x:Name="BackThumbViewer2"  Width="160" Stretch="Uniform" 
MouseLeftButtonDown="BackThumbViewer2_MouseLeftButtonDown"
            
MouseEnter="ProductColorViewer_MouseEnter" 
MouseLeave="ProductColorViewer_MouseLeave" 
Source="BackgroundImages/BlackLandscape640.jpg"   />

        <  TextBlock x:Name="txbBlack" Text="Black" Margin="0,0,2,0"
            FontSize="14" FontFamily="Comic Sans MS" VerticalAlignment="Bottom" 
Height="20" Width="54" HorizontalAlignment="Right"  />

    </ Grid>

</ Border>

在Silverlight 2中遇到的第一个问题是它不包括combo box控制器,因此Joe为我们构造了一个,如果你要自己构造一个,请按照下面的步骤来做:

1.复习一下一些有关的资料,如:

 Jesse Liberty的用户控制器指南

http://www.devx.com/RIA/link/38144)
 Chris Sells的“Show Me the Template” WPF Visual Studio项目http://www.sellsbrothers.com/tools/#showmethetemplate)

2.首先确定你的控制器的视觉外观,通常,一个combo box是由一个文本框,一个触发按钮和一个列表框组成的,Joe最初尝试使用一个弹出窗口,但很快就没有这样做了,因为那样太小儿科了,因此它选择使用列表框替换了弹出窗口,触发按钮相对于普通按钮)的选择提供了一个不同的外观,不仅仅具有了IsPressed属性,而且列表框也是可显示的。通过捕捉触发按钮的Checked和Unchecked事件来控制列表框显示或隐藏。

3.为你希望在Silverlight文件中集成的用户控制器查找一个样式它也包括控制器模板),如果要自己定制这些样式,将你文件的XAML拷贝到项目合适的资源部分一定记住要添加x:key),做一些必要的修改,然后通过Style属性指定样式,你做的主要改动将会包括在每个样式的ControlTemplate部分。

下面的示例代码说明了微软触发按钮控制器模板是如何被修改以符合本项目中combo box的需要的,例如:这个定制的控制器模板包括一个箭头一个矢量图)以及这个箭头的不同颜色的状态如黑色表示正常状态,红色表示鼠标经过,绿色表示按下),这些特性都模仿了微软DatePicker控制器按钮部分的外观。

虽然在帮助文件和微软公共代码网站上已经提供了大部分Silverlight 2控制器模板,但不幸的是,没有提供TextBox控制器模板,由于这个原因,Joe决定使用WatermarkedTextBox替代。

由于WatermarkedTextBox允许为文本选择字体,因此也可能遇到应用样式时出现异常的情况,Silverlight 2只允许你为控制器设置一个样式属性,由于微软将WatermarkedTextBox的Style属性放到它的构造函数中,这就使得要单独为其指定一个样式不可能,然而,幸运的是,可以通过自己定制一个控制器模板来实现想要的视觉样式。


www.htsjk.Com true http://www.htsjk.com/shujukujc/19157.html NewsArticle Beta软件免责声明 这个项目最初是由Silverlight 2 beta 1构建的,与所有beta程序一样,后面的发行版包括的重大改变将会使修改用早期版本构建的程序非常痛苦...
评论暂时关闭