0

ハイスコ​​アのデータソースで設定しているリストボックスがあります

public class HighScore
{
    public string Username {get;set;}
    public int Score{get;set}
}

var IList<HighScore> HighScores = getAllTheScores();
MyListbox.ItemsSource = HighScores;

現在ログインしているユーザー (AppSettings に保存されている) と等しい Username プロパティを持つ行の背景色を変更したいと考えています。コンバーターを見たことがありますが、これは現在ログインしているユーザーを何らかの形で取得する必要があり、コンバーターが取得する必要があるとは思えません。

リストボックスの項目を反復することもできますが、私が見たところ、それはお勧めできません。コントロールへのドリル ビハインド コードへのバインドを優先する必要があります。

これをどのように達成するのが最善かについての提案は大歓迎です:)

4

1 に答える 1

0

2つの提案。ValueConverter を使用する最初のものについては既に言及しました。値 value がビューモデルからアクセスできる場合 (推奨)、ValueConverter に渡すのは簡単です。ビューモデルに保存されていない場合、適切な名前が付けられていれば、値コンバーター内からこれを取得しても問題ありません。

2 番目の提案は、Behavior を使用することです。動作は、ユーザーに基づいて背景を設定する責任があります。ここでは、値コンバーターではないという裏を除いて、値コンバーターよりも大きな利点はありません。それは(ほとんど)同じことをします。全体として、値コンバーターをお勧めします。実装が簡単で、コードのオーバーヘッドが少なく、xaml はほとんど必要ありません。

于 2012-06-29T22:36:51.953 に答える