Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 打开bing映射到绑定坐标_C#_Wpf_Windows Phone 8 - Fatal编程技术网

C# 打开bing映射到绑定坐标

C# 打开bing映射到绑定坐标,c#,wpf,windows-phone-8,C#,Wpf,Windows Phone 8,因此,当我导航到bing地图应该显示正确位置的页面时,我设置了数据上下文,如下所示: protected override void OnNavigatedTo(NavigationEventArgs e) { var k = (app.MainPage.Country)PhoneApplicationService.Current.State["country"]; DataContext = k; } mapsTask.Cen

因此,当我导航到bing地图应该显示正确位置的页面时,我设置了数据上下文,如下所示:

        protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        var k = (app.MainPage.Country)PhoneApplicationService.Current.State["country"];
        DataContext = k;
    }
mapsTask.Center = new GeoCoordinate(41.333333,19.800000);
我在xaml中设置了位置:

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,0,0">
        <maps:Map x:Name="MyMap" Center="{Binding BingCoordinates}" ZoomLevel="10"/>
    </Grid>

感谢您的帮助:)

正如一些评论中所述,绑定失败的原因是指定的类型不是预期的类型(GeoCoordinate)

要解决这个问题,我可以想出两种方法。哪一个更合适取决于关于关注分离的想法

  • 更改数据源以提供可绑定到的对象。 在viewmodel(数据上下文)中,有一个名为“BingCoordinates”的属性。现在这个属性似乎是string类型的(据我所知)。将其类型更改为GeoCoordinate将解决您的问题。您所要做的就是将字符串解析为地理坐标。 这可能会奏效(未经测试):

    提示:GeoCoordination构造函数first arg是纬度,后跟经度。 还请注意,如果希望避免可能的异常,则应使用拆分操作的空检查

  • 使用ValueConverter将源对象转换为视图“理解”的元素。 如果您出于某种原因决定模型的表示是准确的,并且更改它没有多大意义,那么您始终可以根据需要将该值转换为所需的值。 为此,可以使用ValueConverter。ValueConverter是一个实现IValueConverter接口的类,可在绑定中用于将值转换为所需类型(最常见的示例:将布尔值(true/false)转换为可见性类型)


  • 什么是字符串对象?我知道你在那里做了什么,它一定是int,对吗老实说,住在这里——几乎没有。不是int。你试过使用GeoCoordinate吗?@igrali我从如下xml文件中获取所有数据:BingCoordinates=(string)query.Element(“BingCoordinates”),你不能用GeoCoordinate更改(string)..你不能显式转换,但是您可以解析它,并拥有另一个类型为GeoCoordinates的属性BingCoordinates Geo,该属性在调用BingCoordinates=(string)query.Element(“BingCoordinates”)后设置,只需解析现有字符串即可。用逗号分开,并从中提取纬度和经度。你知道如何使用c#(mapsTask)来实现这一点吗?因为这样更好,它可以完全打开bing地图,而不仅仅是地图。
    mapsTask.Center = new GeoCoordinate(41.333333,19.800000);
    
    var r =  (string)query.Element("bingCoordinates").Split(',');
    BingCoordinates = new GeoCoordinate(r[0], r[1]);