Mango 対応 Silverlight 検索アプリケーションの作成(9)「季節の料理」LINQによる繰り返し処理とデータバインド。
Mango 対応 Silverlight 検索アプリケーションの作成、前回からの続きです。
「季節の料理」の処理を説明します。
「季節の料理」のXML文書ファイルのダウンロードが完了した時の処理です。System.Xml.Linq名前空間、XElement.Parseメソッドで、変数item2Docに、XMLを格納した文字列からXElementを読み込みます。
Private Sub item2_DownloadCompleted(ByVal sender As Object, ByVal e As DownloadStringCompletedEventArgs)
Dim item2Data As String = e.Result
item2Doc = XElement.Parse(item2Data)
LINQ to XMLを用いて、変数item2Docに読み込まれているXMLから、<献立>要素について処理を繰り返します。"画像"属性、<コメント>、<主献立>、<菜食基本食材>、<菜食オプション>、<肉>、<魚介>、<乳>、<卵>の各要素のデータを取得して、myitem2ImageInfoに追加します。これをListBox2のItemsSourceに適用します。
Dim monthImageQuery = From c In item2Doc.Descendants("献立") Select c
Dim myitem2ImageInfo As New List(Of item2ImageInfo)
For Each monthResult In monthImageQuery
Dim monthImage As String = "XML文書ファイルを置いたサーバのドメイン名など" & monthResult.<主献立>.@画像
Dim monthComment As String = monthResult.<コメント>.Value
Dim monthMainDish As String = monthResult.<主献立>.Value
Dim monthVegeIngredient As String = monthResult.<菜食基本食材>.Value
Dim monthVegeOption As String
If monthResult.<菜食オプション>.Value = "―" Then
monthVegeOption = String.Empty
Else
monthVegeOption = "《" & monthResult.<菜食オプション>.Value & "》"
End If
Dim meat As String = "肉:" & monthResult.<肉>.Value & "|魚:" & monthResult.<魚介>.Value & "|乳:" & monthResult.<乳>.Value & "|卵:" & monthResult.<卵>.Value
myitem2ImageInfo.Add(New item2ImageInfo With {.画像 = monthImage, .季節主献立 = monthMainDish, .コメント = monthComment, .季節菜食基本食材 = monthVegeIngredient, .季節菜食オプション = monthVegeOption, .季節肉食食材 = meat})
Next
ListBox2.ItemsSource = myitem2ImageInfo
End Sub
次回に続きます。