使用Silverlight Toolkit中Rating等级控件

开发 后端
乍一看到Silverlight Toolkit中Rating等级控件,就让我想起了电影里的“悬赏缉拿”的海报。在头像下面有一排星,根据实心星的数目来标识该罪犯的‘危险程度’。而在Silverlight Toolkit 3就是真的提供了这么一个控件,通过它可以很方便的实现这一功能。

下面就简要介绍一下Silverlight Toolkit中Rating等级控件用法。

首先,我们要在项目中添加对System.Windows.Controls.Input.Toolkit.dll的引用(位于源码包中)。

然后我们就可以到XAML中引用其名空间:

  1. xmlns:inputToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" 

我们用下面代码声名一了Rating实例:

  1. <inputToolkit:Ratingx:NameinputToolkit:Ratingx:Name="rating"Value="0.65"ItemCount="5"HorizontalAlignment="Left"/> 

注意:ItemCount属性标识当前有几颗星。而Value属性则对应当前显示的星值数目(0-1之间)

我们通过下面代码来标识星值着色是否连续(该枚举有两个值Continuous和Individual):

  1. rating.SelectionMode=RatingSelectionMode.Continuous; 

下面我们就看一下演示效果:

   

当然该Silverlight Toolkit控件的星星排列除了水平方向,还可以是垂直方向。另外如果认为星星不好看,可以使用Blend定义一个新的图案做为评级的图标,比如我这里用了示例代码中的样式来把星星换成'圆球',最终的演示效果如下(样式代码可以下载本DEMO查看):

效果  

而相应的XAML代码如下(注意ItemContainerStyle样式绑定):

  1. <inputToolkit:RatingValueinputToolkit:RatingValue="0.65"Foreground="{x:Null}"ItemContainerStyle="{StaticResourceRatingItemStyle}" 
  2. Margin="0,4,0,0"ItemCount="5"> 
  3. <inputToolkit:Rating.ItemsPanel> 
  4. <ItemsPanelTemplate> 
  5. <StackPanelOrientationStackPanelOrientation="Vertical"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"/> 
  6. </ItemsPanelTemplate> 
  7. </inputToolkit:Rating.ItemsPanel> 
  8. </inputToolkit:Rating> 

是不是很好玩

当然上面是通过在XAML页面上定义来实现的,下面介绍一下如果使用CS代码来创建‘等级项’。

在Rating控件中的每个星星(等级)都是一个RatingItem对象,所以我用下面代码来动态加载等级项:

  1. ///<summary> 
  2. ///加载自定义项  
  3. ///</summary> 
  4. privatevoidLoadCustomRatingItem()  
  5. {  
  6.  
  7. string[]ratingItmeArray=newstring[]{"很差","不好","一般","还行","很棒"};  
  8. foreach(stringiteminratingItmeArray)  
  9. {  
  10. RatingItemratingItem=newRatingItem(){Content=item,Foreground=  
  11. newSolidColorBrush(Colors.Blue),Margin=newThickness(12,0,12,0)};  
  12. ratingItem.SetValue(ToolTipService.ToolTipProperty,item);  
  13. customsRating.Items.Add(ratingItem);  
  14. }  
  15. rating.SelectionMode=RatingSelectionMode.Continuous;  

我们来看一下运行效果:

运行效果  
完成了这个演示,来实现一个真正的应用场景,做一个照片评级的应用。首先我们用下面XAML代码创建一个‘带图,按钮,评级控件’的类似于海报的界面。

  1. <BorderWidthBorderWidth="164"Padding="2"BorderBrush="#FFB30000"BorderThickness="1"> 
  2. <StackPanelOrientationStackPanelOrientation="Vertical"Margin="0"> 
  3. <HyperlinkButtonMarginHyperlinkButtonMargin="0"Content="汽车"HorizontalAlignment="Center"VerticalAlignment="Center"Foreground="#FF0F***9B"/> 
  4. <ImageSourceImageSource="Images/car.jpg"Width="160"Margin="9,0"/> 
  5. <inputToolkit:Ratingx:NameinputToolkit:Ratingx:Name="netflix"Value="0.65"ItemCount="5"HorizontalAlignment="Center"BorderBrush="Black"Padding="3,1,3,3"/> 
  6. <ButtonClickButtonClick="Button_Click"Content="提交"Height="30"HorizontalAlignment="Center"VerticalAlignment="Center"Padding="3,1,3,3"/> 
  7. </StackPanel> 
  8. </Border> 

然后我们在‘评论按钮’上绑定事件代码,来显示用户评价的结果。

  1. privatevoidButton_Click(objectsender,RoutedEventArgse)  
  2. {  
  3. System.Windows.Browser.HtmlPage.Window.Alert("你将该图片的评价为:"+netflix.Value);  
  4. //netflix.Value=0;  

***我们运行一下,如下图:
    最终效果           
点击提交按钮后:
    
    点击提交按钮后          
     
当然更复杂的应用在官方的示例中有详细演示,如果大家有兴趣可以去下载运行相应示例即可。

好了,今天的内容就先到这里了。

本文来自代震军博客园文章《使用Silverlight Toolkit 等级控件---Rating

【编辑推荐】

  1. Office 2010将使用Silverlight改善用户体验
  2. 微软.NET平台主管谈Silverlight企业级开发
  3. Flash与Silverlight多领域实测对比
  4. 微软宣称Silverlight装机量超过三亿
  5. 图解Silverlight 3的7个新功能
责任编辑:彭凡 来源: 博客园
相关推荐

2009-08-07 09:20:26

DataPager数据

2009-12-30 13:30:16

Silverlight

2010-01-04 14:49:30

Silverlight

2009-12-30 13:51:43

Silverlight

2009-12-30 17:29:53

Silverlight

2009-12-30 16:43:47

Silverlight

2011-03-09 15:16:06

SilverlightHTML

2009-12-30 11:16:36

Silverlight

2009-12-30 13:59:58

Silverlight

2009-12-31 16:44:53

Silverlight

2011-12-28 10:49:44

Silverlight

2009-12-31 11:15:57

Silverlight

2012-02-02 16:32:23

Silverlight控件模型分类

2009-12-30 14:10:27

Silverlight

2009-12-31 15:58:11

Silverlight

2009-07-31 16:21:23

ibmdwToolkit

2012-02-02 16:37:51

Silverlight常用控件

2009-12-31 14:38:34

Silverlight

2012-07-16 14:43:32

silverlight

2010-03-05 14:55:39

Python创建Sil
点赞
收藏

51CTO技术栈公众号