0

我有一个 Windows Phone 7 应用程序的列表框,它显示从 XML 提要解析的信息。我希望能够更改列表框中字体的颜色,具体取决于从 XML 提要解析的值。我已经搜索并不能完全找到我正在寻找的东西。这是我的代码:

foreach (var item in doc.Descendants("station"))
{
    if (item.Element("name").Value == dest)
    {
     listBox1.Items.Add(item.Element("name").Value);
     listBox1.Items.Add("Last Updated:");
     listBox1.Items.Add(item.Element("date").Value);
     listBox1.Items.Add(item.Element("time").Value);

         foreach (var item1 in item.Descendants("eta"))
         {
          listBox1.Items.Add(item1.Element("destination").Value);
          listBox1.Items.Add(item1.Element("estimate").Value);
         }//foreach

    }//if
}//outer foreach

我想要的是,例如,

if item.Element("name").Value="Fremont" and item1.Element("destination").Value="Daly City", 
then listBox1.Items.Add(item1.Element("destination").Value);

例如,将显示绿色文本(对于“名称”和“目的地”的不同值,依此类推)。我发现的大多数示例都是针对 WPF 或 WP7 以外的其他东西的。

4

2 回答 2

1

根据您已有的内容,最简单的方法是可能将ListBoxItem对象添加到列表框中,而不仅仅是字符串值。

然后你可以设置ListBoxItem.Foreground和其他属性。

// psuedocode, but reasonably close?
var lbi = new ListBoxItem { Content = item.Element("name").Value };
if (yourcondition)
    lbi.Foreground = new SolidColorBrush(Colors.Green);
listBox1.Items.Add(lbi);

虽然这确实有效,但 McAden 的回答在理想情况下更正确,因为您应该真正考虑使用 DataBinding 和模板等东西,而不是在代码/代码隐藏中完成所有这些工作。他们将使您的生活在未来变得更加轻松

于 2012-06-20T21:23:38.240 回答
1

这个答案正在使用 DataBinding,它看起来不像您正在使用,但您可以公开doc.Descendants("station")为属性并将列表框绑定到它。然后,为列表框项定义 DataTemplate 以显示您希望显示的字段部分。对于颜色,您可以将 绑定Foreground到项目并定义一个转换器来转换项目以返回它应该是什么颜色。

于 2012-06-20T21:29:00.920 回答