我有一个列表框,我设置了一个高分数据
public class HighScore
{
public string Username {get;set;}
public int Score{get;set}
}
var IList<HighScore> HighScores = getAllTheScores();
MyListbox.ItemsSource = HighScores;
我想更改Username属性等于当前登录用户(存储在AppSettings中)的任何行的背景颜色。我见过转换器,但这需要以某种方式获取当前登录的用户,这似乎不是转换器应该负责获取的东西。
我也可以迭代列表框项目,但是从我看到的那些不建议的东西,我应该更喜欢绑定代码来钻取控件。
关于如何最好地实现这一点的任何建议都赞赏:)
答案 0 :(得分:0)
两个建议。您已经提到了第一个,即使用ValueConverter。如果可以从视图模型(推荐)访问值,则可以轻松传递给ValueConverter。如果它没有存储在视图模型中,那么只要它被正确命名,就不用担心从值转换器中获取它。
第二个建议是使用行为。行为将负责根据用户设置背景。我没有看到这个值转换器的优点,除了后面它不是一个值转换器。它(几乎)会做同样的事情。总的来说,我会推荐一个值转换器。易于实现,代码开销低,所需的xaml很少。