C# 如何使用datagrid中的图像自动将评级从int转换为Panel?
有一件事需要帮助。我有DataGrid,将它绑定到这个类:C# 如何使用datagrid中的图像自动将评级从int转换为Panel?,c#,wpf,datagrid,C#,Wpf,Datagrid,有一件事需要帮助。我有DataGrid,将它绑定到这个类: class Book { public string Title { get; set; } public string Author { get; set; } public string Tags { get; set; } public string Year { get; set; } public string Description { get; set; } public s
class Book
{
public string Title { get; set; }
public string Author { get; set; }
public string Tags { get; set; }
public string Year { get; set; }
public string Description { get; set; }
public string Path { get; set; }
public int Rating { get; set; }
public Statistics Stats { get; set; }
}
这是XAML:
<DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Margin="56,49,12,12" Name="booksDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" ColumnWidth="*" MinWidth="400" MinHeight="250">
<DataGrid.Columns>
<DataGridTextColumn x:Name="titleColumn" Binding="{Binding Path=Title}" Header="Title" Width="2*" />
<DataGridTextColumn x:Name="authorColumn" Binding="{Binding Path=Author}" Header="Author" Width="*" />
<DataGridTextColumn x:Name="tagsColumn" Binding="{Binding Path=Tags}" Header="Tags" Width="*" />
<DataGridTextColumn x:Name="yearColumn" Binding="{Binding Path=Year}" Header="Year" Width="*" />
<DataGridTextColumn x:Name="ratingColumn" Binding="{Binding Path=Rating}" Header="Rating" Width="*" />
</DataGrid.Columns>
</DataGrid>
但我想展示的不是一个数字,而是五颗星的图像。如何将int值转换为带有图像的面板?您可以尝试以下方法:
class Book
{
public string Title { get; set; }
public string Author { get; set; }
public string Tags { get; set; }
public string Year { get; set; }
public string Description { get; set; }
public string Path { get; set; }
public int Rating { get; set; }
public Statistics Stats { get; set; }
public string displayRating
{
get
{
if (Rating > 0)
{
var temp = "";
for (int i = 0; i < Rating; i++)
{
temp += "*";
}
return temp;
}
return "No rating found";
}
}
}
<DataGridTextColumn x:Name="ratingColumn" Binding="{Binding Path=displayRating}" Header="Rating" Width="*" />
编辑:
如果你需要的明星的最大数量不是一个像30+这样的超级大数字,那么你可以为每个评级制作一个.jpg。
所以你用1*生成一个.jpg文件,用2*生成一个.jpg文件。。
然后在displayRating字符串中执行以下操作:
public string displayRating
{
get{ return "pathToYourJpg" + Rating + ".jpg";}
}
假设您拥有以下Jpg:
c:/users/desktop/rating1.jpg
c:/users/desktop/rating2.jpg
c:/users/desktop/rating3.jpg
c:/users/desktop/rating4.jpg
如果您的评级为4,displayProperty评级将返回c:/users/desktop/rating4.jpg。使用此路径将其绑定到数据网格
像这样的事情不确定tho,我自己没有做过,但应该是这样的:
<Image Source="{Binding Path=displayRating}" Stretch="Fill" Height="100" Width="100" />
这是我脑子里想不出来的。。这是一种方法,你可以这样做,但不要说这是最好的一种:1000,谢谢你的建议,但它看起来真的不漂亮,我想做点什么,就像现在这样。我需要使用图像。