0

我有一个使用高分数据源设置的列表框

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

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

我想更改用户名属性等于当前登录用户(存储在 AppSettings 中)的任何行的背景颜色。我见过转换器,但这需要以某种方式获取当前登录的用户,这似乎不是转换器应该负责获取的东西。

我也可以迭代列表框项目,但从我所看到的情况来看,这是不建议的,我应该更喜欢绑定而不是钻入控件后面的代码。

任何关于如何最好地实现这一目标的建议都非常感谢:)

4

1 回答 1

0

两个建议。您已经提到了第一个,即使用 ValueConverter。如果可以从视图模型(推荐)访问值值,则很容易将其传递给 ValueConverter。如果它没有存储在视图模型中,那么只要命名正确,就不用担心从值转换器中获取它。

第二个建议是使用行为。行为将负责根据用户设置背景。我在这里没有看到比价值转换器有太多优势,除了它不是价值转换器的背面。它(几乎)会做同样的事情。总的来说,我会推荐一个价值转换器。易于实现,代码开销低,需要很少的 xaml。

于 2012-06-29T22:36:51.953 回答