0

XML フィードから解析された情報を表示する Windows Phone 7 アプリのリストボックスがあります。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

この答えは、使用しているようには見えないDataBindingを使用していますがdoc.Descendants("station")、プロパティとして公開し、リストボックスをそれにバインドすることができます。次に、リストボックスアイテムのDataTemplateを定義して、フィールドのどの部分を表示するかを表示します。次に、色について、アイテムにバインドForegroundし、アイテムを変換して本来の色を返すコンバーターを定義できます。

于 2012-06-20T21:29:00.920 に答える
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);

これは機能しますが、コード/コードビハインドでこのすべての作業を行うのではなく、DataBinding と Templates などの使用を実際に検討する必要があるという点で、McAden の答えは理想的にはより正しいです。彼らはあなたの人生を将来ずっと楽にしてくれるでしょう!

于 2012-06-20T21:23:38.240 に答える