【发布时间】:2014-12-23 18:23:09
【问题描述】:
很长一段时间以来,我一直试图了解在 n MVVM 场景中处理 bing Maps 的正确方法。
我可能会像这样在我的 XAML 视图中创建一个映射:
<map:Map x:Name="MyMap"
Credentials="MySuperSecretCredentials"/>
我可以像这样轻松地与 map for eaxmple 交互文件背后的代码:
private async void FindMe_Clicked()
{
_cts = new CancellationTokenSource();
CancellationToken token = _cts.Token;
// Get the location.
Geoposition pos = await _geolocator.GetGeopositionAsync().AsTask(token);
MyMap.SetView(new BasicGeoposition() { Latitude = pos.Coordinate.Latitude, Longitude = pos.Coordinate.Longitude }, 15);
}
只需引用 MyMap,我们就可以在后面的代码中使用它做任何我们喜欢的事情。 但是我怎样才能在我的 viewModel 中执行相同的命令呢?
我想我应该先用调用我的 viewModel 上的方法的命令替换 FindMe_Clicked?并让该方法执行类似于代码隐藏中的方法。但是如何在 viewModel 中访问MyMap?
也许我的虚拟机看起来像这样:
public class MainViewModel
{
public RelayCommand GetLocation { get; private set; }
public MainViewModel()
{
this.GetLocation = new RelayCommand(this.FindMe());
}
public void FindMe()
{
_cts = new CancellationTokenSource();
CancellationToken token = _cts.Token;
// Get the location.
Geoposition pos = await _geolocator.GetGeopositionAsync().AsTask(token);
MyMap.SetView(new BasicGeoposition() { Latitude = pos.Coordinate.Latitude, Longitude = pos.Coordinate.Longitude }, 15);
}
}
如果我没有考虑这个问题,我需要做的是以某种方式将视图中存在的MyMap 的相同实例传递给我的视图模型?
非常感谢您的帮助,如果有人在某个地方遇到过,我也很想看到如何使用 bibg 映射、可移植类库或 Mvvm 模式的任何示例。谢谢!
【问题讨论】: