Mike Schwartz
Mike Schwartz

Reputation: 2212

WPF DataBinding Bing Maps wpf api

I have spent countless hours reading and researching this topic – and I just can’t seem to get a foothold on it. Here is my scenario:

I write software for a company that provides asset-tracking (with some added features). We currently have an ASP.NET based website using the googlemaps api. So this is what I am comfortable with.

I have now been tasked with writing a WPF application with much of the same functionality but instead using the wpf bing maps api. I have messed around with the map and figured out (non-mvvm way) how to draw custom pushpins, polygons, etc… Now I need to use the databinding features. This is where I just can’t seem to put the two together. Basically what I am trying to do is bind a collection of a custom class that creates a custom pushpin, to a MapControlItem.

The documentation is just a bit too fragmented and abstract for me to grab on to something – or maybe I am just too much of a web developer and really struggling to grasp a concept that is new to me.

Any ideas? Examples?

Upvotes: 3

Views: 1634

Answers (2)

Clemens
Clemens

Reputation: 128013

You're right, the Bing Maps WPF Control API documentation is a joke.

Anyway, you would have to use a MapItemsControl and bind its ItemsSource property to your item collection. The ItemsContainerStyle and/or ItemTemplate properties would define the UI objects that are shown on the map.

You may start reading about Data Binding to Collections.

Upvotes: 4

Miiite
Miiite

Reputation: 1557

I only played with the Windows 8 version of the Bing maps control, not the WPF one, so I apologize if my answer is not quite apropriate.

What I know, is that in windows 8, you just can't apply bindings, for MapLayers or MapChildren. From what you describe, I believe you just can't do a binding on these properties in WPF, simply because they are not dependency properties.

So only 1 solution left, in you window's code-behind, subscribe to your ViewModel's PropertyChanged event, and manually apply any updates you need to your control.

Anoter way to do that, is to create a UserControl, which will simply display a BingMaps control, and add to this userControl a "BingMapsContext" (or whatever) dependency property, to manually update the map control when that specific property will be binded.

Upvotes: 0

Related Questions