Create your own user control who displays a number of stars/half stars depending on integer or double. Then use that control and bind it to the rating field.
Or you can use a converter from int to a image (generated or loaded). See below. Use it as a guidance, it's just a quick sample.
internal class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int rating = Int32.Parse(value.ToString());
switch (rating)
{
case 1:
return "C:\\TEMP\\one_star.png";
case 2:
return "C:\\TEMP\\two_stars.png";
default:
return "C:\\TEMP\\no_stars.png";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
And XAML:
<Window x:Class="RatingTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:RatingTest="clr-namespace:RatingTest"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<RatingTest:ImageConverter x:Key="ImageConverter"/>
<XmlDataProvider x:Key="InventoryData" XPath="/Movies">
<x:XData>
<Movies xmlns="">
<Movie>
<Title>One</Title>
<Rating>1</Rating>
</Movie>
<Movie>
<Title>Two</Title>
<Rating>2</Rating>
</Movie>
</Movies>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<ListView ItemsSource="{Binding Source={StaticResource InventoryData}, XPath=Movie}">
<ListView.View>
<GridView>
<GridViewColumn Header="Title">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding XPath=Title}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Rating">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding XPath=Rating, Converter={StaticResource ImageConverter}}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Window>