关于使用以下代码段的简短问题:
var locations = CurrentItems.Select(model => model.Location);
map.SetView(LocationRect.CreateLocationRect(locations));
如本回答所示: Zoom to show all locations in bing maps
我正在检索geocoordinate asynchrounsly的列表,并使用ObservableCollection将这些列表绑定到Bing Map;使用以下方法将结果数据复制到主UI线程:
Deployment.Current.Dispatcher.BeginInvoke( ()=> {...} )
我的问题是,我无法在Dispatcher中引用地图控件(或者我可以吗??),因此如何使用以下方法将新的Pushpin位置应用于地图:
map.SetView(LocationRect.CreateLocationRect(locations));
谢谢, S上。
答案 0 :(得分:0)
因为Map
最终来自DependencyObject
,所以它实际上有自己的Dispatcher
。你可以这样做;
map.Dispatcher.BeginInvoke(() => map.SetView(LocationRect.CreateLocationRect(locations)));
此外,值得注意的是,如果BeginInvoke()
返回false,则只需拨打CheckAccess()
即可。 (CheckAccess
标有EditorBrowsable(EditorBrowsableState.Never)
属性,因此无法在intellisense中显示,您必须手动输入。常见的模式是;
if (map.Dispatcher.CheckAccess() == false) {
map.Dispatcher.BeginInvoke(() => map.setView(LocationRect.CreateLocationRect(locations)));
} else {
map.SetView(LocationRect.CreateLocationRect(locations));
}
答案 1 :(得分:0)
我也许你会发现这篇文章很有用。要绑定地图和ViewModel的视图,所描述的方法使用DependecyPropety:http://sveiberg.wordpress.com/2012/06/24/5/。