Data FeedとData Entryの追加と参照
作成されたSilverlightのプロジェクトのPage.
Private meshApp As MeshApplicationService
Public Sub New()
InitializeComponent()
meshApp = Application.Current.GetMeshApplicationService()
AddHandler meshApp.LoadCompleted, AddressOf meshAppLoaded
meshApp.LoadAsync(Nothing)
End Sub
Pageクラスのコンストラクタ内でMes ApplicationServiceオブジェクトの参照を取得し
ロードが完了すると,
サンプルとしてアプリケーション自身のData FeedにData Entryを追加と,
以下にData Feedを作成して,
Private Sub meshAppLoaded(ByVal o As Object, ByVal e As EventArgs)
' Data Feed の作成
Dim feed = New DataFeed("Data Feed Sample")
' Data Feed の追加
AddHandler meshApp.DataFeeds.AddCompleted, AddressOf DataFeedsAddCompleted
meshApp.DataFeeds.AddAsync(feed, Nothing)
End Sub
AddAsyncメソッドの第2引数は,
Data Feedの追加完了時のイベント処理を記述します。Data Entryを作成しData Feedへ追加しています。
' Data Feed の追加完了
Private Sub DataFeedsAddCompleted(ByVal sender As Object, ByVal e As Microsoft.LiveFX.Client.LiveItemEventArgs(Of Microsoft.LiveFX.Client.DataFeed))
' Data Entry の作成
Dim entry = New DataEntry("Data Entry Sample")
' meshApp 最初の Data Feed に Data Entry 追加
Dim feed = meshApp.DataFeeds.Entries.FirstOrDefault
AddHandler feed.DataEntries.AddCompleted, AddressOf DataEntriesAddCompleted
feed.DataEntries.AddAsync(entry, Nothing)
End Sub
最後に,
' Data Entry の追加完了
Private Sub DataEntriesAddCompleted(ByVal sender As Object, ByVal e As Microsoft.LiveFX.Client.LiveItemEventArgs(Of Microsoft.LiveFX.Client.DataEntry))
' Data Entry 一覧表示
For Each feed In meshApp.DataFeeds.Entries
For Each entry In feed.DataEntries.Entries
MyListBox.Items.Add(entry.Resource.Title)
Next
Next
End Sub
コードではListBoxにData Entryの内容を追加しています。XAMLのコード
<UserControl x:Class="MeshApp1Silverlight.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<ListBox x:Name="MyListBox" />
</Grid>
</UserControl>
以上までのコードを実行すると,
上記のコードは意味のないものですが,
Mesh Objectの参照
MeshApplicationServiceクラスによってアプリケーション自身のData Feedなどのリソースアクセスを紹介しました。アプリケーションにMesh上のMesh Objectのアクセスを許可している場合,
MeshApplicationServiceにはLiveOperatingEnvironmentプロパティが用意されています。これを使用すればLive Operating Environmentのエンドポイントからのすべてのリソースにアクセスできます。Mesh Objectを参照するには次のようになります。
Dim loe = meshApp.LiveOperatingEnvironment
For Each mo In loe.Mesh.MeshObjects.Entries
MyListBox.Items.Add(mo.Resource.Title)
Next
Mesh Objectだけでなくデバイス等にも同様にアクセス可能です。