[英]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.