オルタナティブ・ブログ > イメージ AndAlso ロジック >

ヴィジュアル、サウンド、テキスト、コードの間を彷徨いながら、感じたこと考えたことを綴ります。

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

次回に続きます。

Comment(0)