1

1つのことで助けが必要です。私は持っています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 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>

しかし、私は評価を数字ではなく、星の5つの画像のように表示したいと思います。int値を画像付きのパネルのようなものに変換するにはどうすればよいですか?

4

1 に答える 1

0

あなたはこのようなことを試すことができます:

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";
        } 
    }
}

Ratingプロパティ=5の場合、プロパティdisplayRatingはになります"*****"displayRating次のように、そのプロパティをグリッドビューにバインドできます。

 <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"「このパスを使用してデータグリッドにバインドします」を返します。

このようなもの(確かではありませんが、実際にこれを自分で行ったことはありませんが、次のようなものになるはずです):

<Image Source="{Binding Path=displayRating}" Stretch="Fill" Height="100" Width="100" />

これは私の頭のすぐ上にあります..これはあなたがそれを行うことができる1つの方法であり、これが最高のものであるとは言わないでください:)

于 2013-01-05T20:00:11.000 に答える