2011-09-05 53 views
0

我在我的WP7應用程序中要求在多個數據源的bing地圖上顯示圖釘,我不確定是否執行此操作的最佳方法。如何從多個模型綁定Bing Pushpins?

因此,例如,它會是這樣的,我從web服務接收的人的名單,建築物的名單,我需要在自己的看法單獨顯示這些也顯示POI等的列表他們在地圖上爲每種類型提供不同的圖像。

我試圖用一個MVVM方法,使對一個人的建築物等一類,類,這些每個人都有一個位置。然後,我爲這些類型中的每一個都有一個ObservableCollection,因此使用數據綁定很容易爲每個類型執行View。

此刻我只有一個視圖模型,但我首先想到的是,我覺得我真的應該有每一個類型視圖模型。那麼PersonViewModel,BuildingViewModel在這裏?然而,一個地圖視圖然後需要從這些視圖中獲取信息,我不確定如何將視圖綁定到多個ViewModel,或者即使這是明智的。

MapItemsControl也似乎只能夠綁定到一兩件事,我怎麼能綁定到這樣的多個不同的數據源?我以爲我可以創建一個簡單的圖釘類,但那麼這將意味着不得不爲每種類型的重複數據,我最終還是希望能夠點擊圖釘以顯示引腳的細節,因此想保持類型分開

任何一個前進的方向指針非常讚賞

回答

5

使用MapItemsControl就像你說的那樣,要做到這一點。這很容易。你想要的是一個ViewModel,每個類型都有一個ObservableCollection,就像你說的那樣。

所以我想你的問題是,你不知道如何使用樣式和的ItemTemplate。

如果你想要的東西,是對每一個不同類型的風格相同,則簡單地定義你應用到每個MapItemsControl.ItemTemplate共同ItemTemplate。同樣,如果您想要什麼,您可以定義一個自定義樣式,並將其應用於每個圖釘全局。

<Grid.Resources> 
    <DataTemplate x:Name="PushpinItemTemplate"> 
     <maps:Pushpin Location="{Binding Location}" Tap="Pushpin_Tap" Style="{StaticResource PushpinStyle}" /> 
    </DataTemplate> 
</Grid.Resources> 

... 

<maps:Map> 
    <maps:MapLayer> 
     <maps:MapItemsControl ItemsSource="{Binding People}" ItemTemplate="{StaticResource PushpinItemTemplate}" /> 
     <maps:MapItemsControl ItemsSource="{Binding Buildings}" ItemTemplate="{StaticResource PushpinItemTemplate}" /> 
    </maps:MapLayer> 
</maps:Map> 
+0

謝謝你的答案。我不是太遙遠,但我沒有意識到你可以有多個MapItemsControl元素與這樣的地圖相關聯,這是我錯過了。使用您提供的這些信息應該爲我提供我需要向前邁進的指針。 – Firedragon

+0

這幫了我很多:-)。 – Afra