簡體   English   中英

更改Windows Phone 7中列表框項的顏色

[英]Changing color of listbox items in Windows Phone 7

我有一個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);

例如,將顯示綠色文本(對於“name”和“destination”的不同值,依此類推)。 我發現的大多數例子都是WPF或WP7之外的其他東西。

基於您已有的最簡單的方法是將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和模板而不是在代碼/代碼隱藏中完成所有這些工作。 他們將來會讓你的生活輕松!

這個答案是使用DataBinding,它看起來不像你正在使用但你可以將doc.Descendants("station")公開為屬性並將列表框綁定到它。 然后,為列表框項定義DataTemplate以顯示要顯示的字段的哪個部分。 對於顏色,您可以將Foreground綁定到項目並定義轉換器以轉換項目以返回它應該是什么顏色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM