使用Silverlight Toolkit中Rating等級(jí)控件
下面就簡(jiǎn)要介紹一下Silverlight Toolkit中Rating等級(jí)控件用法。
首先,我們要在項(xiàng)目中添加對(duì)System.Windows.Controls.Input.Toolkit.dll的引用(位于源碼包中)。
然后我們就可以到XAML中引用其名空間:
- xmlns:inputToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
我們用下面代碼聲名一了Rating實(shí)例:
- <inputToolkit:Ratingx:NameinputToolkit:Ratingx:Name="rating"Value="0.65"ItemCount="5"HorizontalAlignment="Left"/>
注意:ItemCount屬性標(biāo)識(shí)當(dāng)前有幾顆星。而Value屬性則對(duì)應(yīng)當(dāng)前顯示的星值數(shù)目(0-1之間)
我們通過(guò)下面代碼來(lái)標(biāo)識(shí)星值著色是否連續(xù)(該枚舉有兩個(gè)值Continuous和Individual):
- rating.SelectionMode=RatingSelectionMode.Continuous;
下面我們就看一下演示效果:
當(dāng)然該Silverlight Toolkit控件的星星排列除了水平方向,還可以是垂直方向。另外如果認(rèn)為星星不好看,可以使用Blend定義一個(gè)新的圖案做為評(píng)級(jí)的圖標(biāo),比如我這里用了示例代碼中的樣式來(lái)把星星換成'圓球',最終的演示效果如下(樣式代碼可以下載本DEMO查看):

而相應(yīng)的XAML代碼如下(注意ItemContainerStyle樣式綁定):
- <inputToolkit:RatingValueinputToolkit:RatingValue="0.65"Foreground="{x:Null}"ItemContainerStyle="{StaticResourceRatingItemStyle}"
- Margin="0,4,0,0"ItemCount="5">
- <inputToolkit:Rating.ItemsPanel>
- <ItemsPanelTemplate>
- <StackPanelOrientationStackPanelOrientation="Vertical"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"/>
- </ItemsPanelTemplate>
- </inputToolkit:Rating.ItemsPanel>
- </inputToolkit:Rating>
是不是很好玩
當(dāng)然上面是通過(guò)在XAML頁(yè)面上定義來(lái)實(shí)現(xiàn)的,下面介紹一下如果使用CS代碼來(lái)創(chuàng)建‘等級(jí)項(xiàng)’。
在Rating控件中的每個(gè)星星(等級(jí))都是一個(gè)RatingItem對(duì)象,所以我用下面代碼來(lái)動(dòng)態(tài)加載等級(jí)項(xiàng):
- ///<summary>
- ///加載自定義項(xiàng)
- ///</summary>
- privatevoidLoadCustomRatingItem()
- {
- string[]ratingItmeArray=newstring[]{"很差","不好","一般","還行","很棒"};
- foreach(stringiteminratingItmeArray)
- {
- RatingItemratingItem=newRatingItem(){Content=item,Foreground=
- newSolidColorBrush(Colors.Blue),Margin=newThickness(12,0,12,0)};
- ratingItem.SetValue(ToolTipService.ToolTipProperty,item);
- customsRating.Items.Add(ratingItem);
- }
- rating.SelectionMode=RatingSelectionMode.Continuous;
- }
我們來(lái)看一下運(yùn)行效果:
完成了這個(gè)演示,來(lái)實(shí)現(xiàn)一個(gè)真正的應(yīng)用場(chǎng)景,做一個(gè)照片評(píng)級(jí)的應(yīng)用。首先我們用下面XAML代碼創(chuàng)建一個(gè)‘帶圖,按鈕,評(píng)級(jí)控件’的類似于海報(bào)的界面。
- <BorderWidthBorderWidth="164"Padding="2"BorderBrush="#FFB30000"BorderThickness="1">
- <StackPanelOrientationStackPanelOrientation="Vertical"Margin="0">
- <HyperlinkButtonMarginHyperlinkButtonMargin="0"Content="汽車"HorizontalAlignment="Center"VerticalAlignment="Center"Foreground="#FF0F***9B"/>
- <ImageSourceImageSource="Images/car.jpg"Width="160"Margin="9,0"/>
- <inputToolkit:Ratingx:NameinputToolkit:Ratingx:Name="netflix"Value="0.65"ItemCount="5"HorizontalAlignment="Center"BorderBrush="Black"Padding="3,1,3,3"/>
- <ButtonClickButtonClick="Button_Click"Content="提交"Height="30"HorizontalAlignment="Center"VerticalAlignment="Center"Padding="3,1,3,3"/>
- </StackPanel>
- </Border>
然后我們?cè)凇u(píng)論按鈕’上綁定事件代碼,來(lái)顯示用戶評(píng)價(jià)的結(jié)果。
- privatevoidButton_Click(objectsender,RoutedEventArgse)
- {
- System.Windows.Browser.HtmlPage.Window.Alert("你將該圖片的評(píng)價(jià)為:"+netflix.Value);
- //netflix.Value=0;
- }
***我們運(yùn)行一下,如下圖:
點(diǎn)擊提交按鈕后:
當(dāng)然更復(fù)雜的應(yīng)用在官方的示例中有詳細(xì)演示,如果大家有興趣可以去下載運(yùn)行相應(yīng)示例即可。
好了,今天的內(nèi)容就先到這里了。
本文來(lái)自代震軍的博客園文章《使用Silverlight Toolkit 等級(jí)控件---Rating 》
【編輯推薦】