一步一步学Silverlight 2系列(2):基本控件

概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。

本文为系列文章第二篇学习几个基本的控件。

在Silverlight 2中,提供了大量的控件,包括Button、、Calendar 、CheckBox 、DataGrid 、DatePicker 、GridSplitter 、HyperlinkButton 、ListBox 、RadioButton 、ScrollViewer 、Slider 、ToggleButton、ToolTip 、WatermarkedTextBox等,本文将讲述其中的几个控件之用法。

控件之ToggleButton

翻转效果在AJAX时代已经相当多了,Silverlight中内置了ToggleButton控件,可以使用如下XAML代码声明一个ToggleButton:

TerryLee_Silverlight2_0010

运行后界面如下:

TerryLee_Silverlight2_0011

单击按钮后,控件效果外观效果将会改变:

TerryLee_Silverlight2_0012

ToggleButton控件有一个很重要的属性IsThreeState,指示控件是否保持三种状态,如设为false,则只会保持两种状态。

控件之WatermarkedTextBox

WatermarkedTextBox即水印效果文本框,可以在文本框未获得焦点之前显示一段文字提示信息,也可以显示其它的控件。如下面的XAML中,在第一个WatermarkedTextBox中指定水印效果为显示一段文字提示“Please enter password”,而第二个则指定水印效果为一张图片:

TerryLee_Silverlight2_0013

运行后效果如下所示:

TerryLee_Silverlight2_0014

单击其中一个文本框:

TerryLee_Silverlight2_0015

控件之ScrollViewer

ScrollViewer控件使用非常简单,当其中显示的内容超过它自身的大小时,就会有滚动条出现。通过属性HorizontalScrollBarVisibility和VerticalScrollBarVisibility来控制纵向和横向滚动条是否出现:

TerryLee_Silverlight2_0016

运行上面的示例:

TerryLee_Silverlight2_0017 

控件之ToolTip

ToolTip控件很多时候都用于其它控件的内嵌控件,如Button控件的ToolTip附加属性等。声明ToolTip控件如下面的XAML所示,当鼠标放上按钮时显示一个简单的信息提示:

TerryLee_Silverlight2_0018

运行后鼠标放上按钮时效果:

TerryLee_Silverlight2_0019

结束语

本文简单的演示了Silverlight 2中的几个控件的使用,对于DataGrid和ListBox等控件一般用来显示列表数据,将会在后面的数据绑定中讲述,而其它的诸如Button、TextBlock等控件的使用非常简单,这里不再讲述。

下一篇:一步一步学Silverlight 2系列(3):界面布局

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Tag标签: Silverlight,XAML
posted @ 2008-03-07 21:23 TerryLee 阅读(12983) 评论(70)  编辑 收藏 网摘 所属分类: [03]  银光点亮世界

  回复  引用  查看    
#1楼 2008-03-07 22:32 | 李永京      
o(∩_∩)o... 真快啊,大家可以看看中文的资料好好的入门学习一下。
  回复  引用  查看    
#2楼 [楼主]2008-03-07 22:34 | TerryLee      
@李永京
呵呵,晚上有点时间,就看了一下:)
  回复  引用  查看    
#3楼 2008-03-08 11:31 | aspnetx      
支持
新版本的发布开发起来确实要方便好多
  回复  引用  查看    
#4楼 [楼主]2008-03-08 11:31 | TerryLee      
@aspnetx
是的,比1.0的时代强大了不少:)
  回复  引用    
#5楼 2008-03-08 23:34 | skyearth [未注册用户]
请问楼主,WatermarkedTextBox中的那个图片的路径是什么回事
我放到根目录下面怎么没有效果
  回复  引用  查看    
#6楼 [楼主]2008-03-08 23:57 | TerryLee      
@skyearth
图片应该放在Silverlight项目中。
  回复  引用  查看    
#7楼 2008-03-09 00:24 | 飞地      
TerryLee
我下面的这个目录结构有什么问题没有,还是没有看到图片.

提示我
Media “admin.jpg” in control ”Xam1“ could be found
还请楼主多多指教。
  回复  引用  查看    
#8楼 2008-03-09 00:26 | 飞地      
楼主要注意身体哦,我先休息了。
晚安!
  回复  引用  查看    
#9楼 [楼主]2008-03-09 00:31 | TerryLee      
@飞地
明天有空把你的代码粘贴一下吧:)
  回复  引用  查看    
#10楼 2008-03-09 11:20 | 生鱼片      
@飞地
《WatermarkedTextBox.Watermark》《Image Source="11.jpg" HorizontalAlignment="Left"》《/Image》《/WatermarkedTextBox.Watermark》
你那样放这样引用我这没问题啊
  回复  引用  查看    
#11楼 [楼主]2008-03-09 12:24 | TerryLee      
@生鱼片
按照上面的目录结构,我那样引用也没出现问题啊
  回复  引用    
#12楼 2008-03-11 13:49 | 一迷途 [未注册用户]
楼主: 我的也无法显示图片,配置和你一样!非常纳闷!
  回复  引用  查看    
#13楼 [楼主]2008-03-11 14:31 | TerryLee      
@一迷途
这样吧,你用一张.png格式的图片试试看,我用gif和jpg格式好像也显示不出来:)
  回复  引用    
#14楼 2008-03-12 10:23 | JeffreyChen [未注册用户]
我的图片也无法显示,格式用的png,结构跟 飞地 的一样
  回复  引用  查看    
#15楼 [楼主]2008-03-12 10:56 | TerryLee      
@JeffreyChen
怎么会这样呢?把你的那段代码贴出来看一下吧。
  回复  引用    
#16楼 2008-03-12 15:03 | JeffreyChen [未注册用户]
可以了,我是直接给一个gif格式的直接改扩展名变成的png,大哥速度太快了,跟不上呀,呵
  回复  引用  查看    
#17楼 [楼主]2008-03-12 16:44 | TerryLee      
@JeffreyChen
呵呵,直接修改的肯定不行了。

Beta1还是有很多问题,居然不支持jpg和gif格式的,唉。。。
  回复  引用    
#18楼 2008-03-13 09:10 | junelee12112003 [未注册用户]
好像图片要放到web项目里才可以
  回复  引用    
#19楼 2008-03-13 11:02 | JeffreyChen [未注册用户]
不一定要放到Web项目中的,好久没搞过WEB开发了,呵
向TerryLee 大哥学习呀,一直在做winFrom,感觉做web要累些,呵
  回复  引用  查看    
#20楼 [楼主]2008-03-13 12:59 | TerryLee      
@junelee12112003
图片放在Silverlight项目中的
  回复  引用  查看    
#21楼 [楼主]2008-03-13 12:59 | TerryLee      
@JeffreyChen
谢谢:)

做Web要累些,这倒不见得吧,呵呵
  回复  引用  查看    
#22楼 2008-03-15 13:48 | tatung zhang      
@TerryLee
为什么在使用ToogleButton时只要设置他的IsThreeState属性时就会弹出错误提示,
===============
灾难性故障 (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
at MS.Internal.XcpImports.CreateObjectByTypeIndex(UInt32 typeIndex)
at System.Windows.DependencyObject..ctor(UInt32 nativeTypeIndex).....
======================================
不知道TerryLee有没遇到过这样的错误???

  回复  引用  查看    
#23楼 [楼主]2008-03-15 17:20 | TerryLee      
@tatung zhang
我这儿设置之后没有出现这样的问题啊
  回复  引用  查看    
#24楼 2008-03-23 20:02 | 飞地      
@TerryLee
那个问题我解决了一部分,我先用一个PNG的图片实验了一下,
OK,可以看到,然后用JPG的,搞定了,但是我换了一个GIF的,没有效果。
P.S.
忙了段时间,都更新到了32了,怀疑能否赶上楼主哦。
  回复  引用  查看    
#25楼 [楼主]2008-03-24 21:26 | TerryLee      
@飞地
慢慢来吧,呵呵:)
  回复  引用    
#26楼 2008-03-25 21:05 | 332 [未注册用户]
请问楼主:我运行程序后,再关闭刚打开的页面,为什么程序还处在运行状态?
谢谢!!
  回复  引用  查看    
#27楼 [楼主]2008-03-25 22:22 | TerryLee      
@332
程序还处在运行状态是什么意思?
  回复  引用  查看    
#28楼 2008-04-07 23:14 | 枫之一刀      
感谢楼主的无私奉献,认真学习。
  回复  引用    
#29楼 2008-04-10 16:00 | 曾经来过 [未注册用户]
tatung zhang
@TerryLee
为什么在使用ToogleButton时只要设置他的IsThreeState属性时就会弹出错误提示,
===============
灾难性故障 (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
at MS.Internal.XcpImports.CreateObjectByTypeIndex(UInt32 typeIndex)
at System.Windows.DependencyObject..ctor(UInt32 nativeTypeIndex).....
======================================
不知道TerryLee有没遇到过这样的错误???
-----------------------------------------------------------------
有这样的问题
  回复  引用    
#30楼 2008-04-10 16:01 | 曾经来过 [未注册用户]
为什么在使用ToogleButton时只要设置他的IsThreeState属性时就会弹出错误提示,
------------------------------------------------------------

尽管有错,但是你别管,保存,关闭该页面,重新打开它,就没事了
  回复  引用  查看    
#31楼 2008-04-23 17:14 | IT爱好者      
===============
灾难性故障 (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
at MS.Internal.XcpImports.CreateObjectByTypeIndex(UInt32 typeIndex)
at System.Windows.DependencyObject..ctor(UInt32 nativeTypeIndex).....
======================================


这个错误我也出现了,不过后来也没出现,可能是SilverLight的一个小bug吧
  回复  引用  查看    
#32楼 2008-05-07 21:52 | 凯锐      
--引用--------------------------------------------------
IT爱好者: ===============
灾难性故障 (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
at MS.Internal.XcpImports.CreateObjectByTypeIndex(UInt32 typeIndex)
at System.Windows.DependencyObject..ctor(UInt32 nativeTypeIndex).....
======================================


这个错误我也出现了,不过后来也没出现,可能是SilverLight的一个小bug吧
--------------------------------------------------------
我也出現過, 但保存,關閉該頁之后再打開,又可以了。
  回复  引用    
#33楼 2008-05-08 12:43 | davidguoliu [未注册用户]
@tatung zhang

我也遇到了同样的问题。

  回复  引用  查看    
#34楼 2008-05-22 11:08 | Longkin      
那如果我要用动态数据怎么办,不能也把图片放在,sl项目里吧?
  回复  引用  查看    
#35楼 2008-05-26 19:34 | LanceZhang      
奇怪,貌似silverlight只支持PNG图片,呵呵
  回复  引用  查看    
#36楼 2008-06-16 18:34 | 飄lá┽蕩去      
在beta2版本下好像没有WatermarkedTextBox和ToolTip,有ToolTipService.ToolTip

  回复  引用  查看    
#37楼 2008-06-16 22:22 | 房客      
老大,我VS2008 beta1 + silverlight2 beta2,在工具箱中没有 WatermarkedTextBox 这个控件呀。并且我在代码中也没有,不知道是不是还需要引用其它的程序集?
  回复  引用  查看    
#38楼 [楼主]2008-06-16 22:29 | TerryLee      
@房客
Beta 2下移除了WatermarkedTextBox这个控件。。。
  回复  引用  查看    
#39楼 2008-06-16 22:41 | 房客      
ToolTip也不见了,不过在WPF的System.Windows.Controls中可以看到该类,在Page.xaml.cs中,也引用了using System.Windows.Controls;
该程序集,但该控件还是不可以使用。不知何解?是不是连ToolTip也一并移除了?
这样优秀的控件为什么要移除呢?我想应该不会是涉及到安全因素吧,亦或者是有代替控件?
  回复  引用    
#40楼 2008-06-25 12:06 | veinyf#163.com [未注册用户]
没有ToolTip, WatermarkedTextBox这两个控件,很好用为什么没有呢?
  回复  引用  查看    
#41楼 [楼主]2008-06-26 09:55 | TerryLee      
@veinyf#163.com
ToolTip在Beta 2中只能通过ToolTipService来是指定,而WatermarkedTextBox这个控件之所以移除是因为在未来微软会给TextBox提供一个Watermark属性

http://www.cnblogs.com/Terrylee/archive/2008/06/18/upgrade-silverlight-application-from-beta1-to-beta2.html
  回复  引用  查看    
#42楼 2008-07-04 21:46 | 张跃      
beta2中好像那个watermarkedTextBox没有了
  回复  引用  查看    
#43楼 [楼主]2008-07-06 22:20 | TerryLee      
@张跃
看看这篇文章吧,在Beta 2中移除了WatermarkedTextBox控件,但是不用担心,在RTM中对于TextBox控件上会添加Watermark属性。

http://www.cnblogs.com/Terrylee/archive/2008/06/18/upgrade-silverlight-application-from-beta1-to-beta2.html
  回复  引用  查看    
#44楼 2008-08-18 10:40 | 汉城      

谢谢楼主的中文教程。。。
  回复  引用  查看    
#45楼 [楼主]2008-08-20 10:22 | TerryLee      
@汉城
不用客气。。
  回复  引用    
#46楼 2008-08-26 20:23 | cocowool [未注册用户]
@tatung zhang
我也遇到了灾难性故障
只是我没有toggleBotton
也没有isThreeState
不知道是什么地方引起的
  回复  引用    
#47楼 2008-09-17 13:45 | 游乐儿 [未注册用户]
现在beta2又出了,但是两者的兼容性好像不是太好 ,如果有介绍希望载入,
----贪得无厌的学者

  回复  引用  查看    
#48楼 2008-09-18 10:55 | 柳城之城      
来学习了。不过我现在用的还是vs2005。先做个记号吧。
  回复  引用  查看    
#49楼 [楼主]2008-10-08 11:14 | TerryLee      
@游乐儿
再等几天吧,正式版就要出来了。
  回复  引用  查看    
#50楼 [楼主]2008-10-08 11:15 | TerryLee      
@柳城之城
:-)
  回复  引用    
#51楼 2008-10-16 09:49 | 001 [未注册用户]
我用Silverlight2.0怎么没有WatermarkedTextBox这个控件?
  回复  引用    
#52楼 2008-10-21 23:20 | straybird [未注册用户]
--引用--------------------------------------------------
001: 我用Silverlight2.0怎么没有WatermarkedTextBox这个控件?
--------------------------------------------------------
我也有同样的问题
  回复  引用  查看    
#53楼 [楼主]2008-10-24 10:22 | TerryLee      
@001
@straybird
现在已经移除了该控件。
  回复  引用    
#54楼 2008-11-06 01:15 | 冻结 [未注册用户]
谢谢楼主
  回复  引用  查看    
#55楼 [楼主]2008-11-06 20:23 | TerryLee      
@冻结
:)
  回复  引用  查看    
#56楼 2008-11-11 16:50 | liuhaitao      
您好楼主,刚发布的2.0里,Button中是不是不能包含<Button.ToolTip>了啊,我找了半天没找到
  回复  引用  查看    
#57楼 [楼主]2008-11-12 11:13 | TerryLee      
@liuhaitao
这么使用取消了,记得添加了一个ToolTipService之类的,你可以看一下:)
  回复  引用  查看    
#58楼 2008-11-12 11:22 | liuhaitao      
ToolTipService我找到了 谢谢楼主

我刚开始研究silverlight,还有一个问题:我怎么让1.aspx引用1.xaml中的内容,让2.aspx引用2.xaml中的内容呢?我建了两个xaml文件,但是在clientBin目录下只生成一个xap文件,我引用完这个文件后,就只显示1.xaml中内容

  回复  引用    
#59楼 2008-11-22 00:47 | 游乐儿 [未注册用户]
哎哟,正式版里,是不是微软的叔叔忘记了给textbox加watermark阿
  回复  引用  查看    
#60楼 [楼主]2008-11-22 10:08 | TerryLee      
@游乐儿
现在的确没有添加:)

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-03-08 00:49 编辑过
Google站内搜索



相关文章:


相关搜索:
Silverlight XAML

相关链接: