使用Silverlight Toolkit中Rating等級控件
下面就簡要介紹一下Silverlight Toolkit中Rating等級控件用法。
首先,我們要在項(xiàng)目中添加對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)識當(dāng)前有幾顆星。而Value屬性則對應(yīng)當(dāng)前顯示的星值數(shù)目(0-1之間)
我們通過下面代碼來標(biāo)識星值著色是否連續(xù)(該枚舉有兩個值Continuous和Individual):
- rating.SelectionMode=RatingSelectionMode.Continuous;
下面我們就看一下演示效果:
當(dāng)然該Silverlight Toolkit控件的星星排列除了水平方向,還可以是垂直方向。另外如果認(rèn)為星星不好看,可以使用Blend定義一個新的圖案做為評級的圖標(biāo),比如我這里用了示例代碼中的樣式來把星星換成'圓球',最終的演示效果如下(樣式代碼可以下載本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)然上面是通過在XAML頁面上定義來實(shí)現(xiàn)的,下面介紹一下如果使用CS代碼來創(chuàng)建‘等級項(xiàng)’。
在Rating控件中的每個星星(等級)都是一個RatingItem對象,所以我用下面代碼來動態(tài)加載等級項(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;
- }
我們來看一下運(yùn)行效果:
完成了這個演示,來實(shí)現(xiàn)一個真正的應(yīng)用場景,做一個照片評級的應(yīng)用。首先我們用下面XAML代碼創(chuàng)建一個‘帶圖,按鈕,評級控件’的類似于海報的界面。
- <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>
然后我們在‘評論按鈕’上綁定事件代碼,來顯示用戶評價的結(jié)果。
- privatevoidButton_Click(objectsender,RoutedEventArgse)
- {
- System.Windows.Browser.HtmlPage.Window.Alert("你將該圖片的評價為:"+netflix.Value);
- //netflix.Value=0;
- }
***我們運(yùn)行一下,如下圖:
點(diǎn)擊提交按鈕后:
當(dāng)然更復(fù)雜的應(yīng)用在官方的示例中有詳細(xì)演示,如果大家有興趣可以去下載運(yùn)行相應(yīng)示例即可。
好了,今天的內(nèi)容就先到這里了。
本文來自代震軍的博客園文章《使用Silverlight Toolkit 等級控件---Rating 》
【編輯推薦】