设置Bing地图Silverlight控件属性从代码隐藏
我需要在加载页面上的控件之前从代码背后设置CredentialsProvider。我在代码后面有“ApiKey”依赖项属性,并将其绑定到Bing Maps silverlight Control,但它不起作用。它在运行时出现错误“无效凭据”。设置Bing地图Silverlight控件属性从代码隐藏
代码隐藏
public static readonly DependencyProperty ApiKeyProperty = DependencyProperty.Register("ApiKey", typeof(string), typeof(MainPage), new PropertyMetadata(""));
protected string ApiKey
{
get { return this.GetValue(ApiKeyProperty) as string; }
set { this.SetValue(ApiKeyProperty, value); }
}
XAML
<m:Map x:Name="map" Grid.Row="1" Grid.ColumnSpan="5" Margin="0" CredentialsProvider="{Binding ElementName=silverlightMap, Path=ApiKey}"
Mode="Road" MouseMove="map_MouseMove" MouseLeftButtonUp="map_MouseLeftButtonUp" MouseLeftButtonDown="map_MouseLeftButtonDown"
ViewChangeEnd="map_ViewChangeEnd"></m:Map>
类名是和的MainPage正在从用户控件继承。
的CredentialsProvider
属性是字符串类型不,不字符串自动转换为CredentialsProvider
实例(如何将它选择转换到子类?)
你最好关闭曝光CredentialsProvider
实例来自您的代码。这样,您可以根据您的配置文件返回API密钥或客户端令牌。
是的,我曾尝试过,但CredentialsProvider是一个抽象类,我不能创建它的一个实例。 – Neutralizer 2010-08-07 14:09:52
根据您想要如何使用Bing进行身份验证,您需要选择两个子类。这就是要点 - 一个字符串可以转换为这两个类中的任何一个,所以Bing不会为你自动转换字符串。阅读文档:http://msdn.microsoft.com/en-us/library/microsoft.maps.mapcontrol.core.credentialsprovider.aspx – 2010-08-07 15:04:39
CredentialsProvider = new ApplicationIdCredentialsProvider("AbcdEfghIjklMNnoP_4rlMTclX8iXiNYUYQnG3GPYoxABCDEmoj3cCBemAAG")
多少辛劳之后,我终于发现,当Thread.CurrentUICulture设置为固定区域性发生这种情况。 确保它在App.Startup事件处理程序中设置为特定文化(也可以考虑设置Thread.CurrentCulture),例如
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
当然,您仍然需要使用您的AppID正确设置凭据。 HTH。
您是否确认ApiKey属性get返回您的有效密钥? – DaveB 2010-08-06 15:58:17
是的,我检查了很多次 – Neutralizer 2010-08-06 18:23:57
我的这个问题太老了。我通过不使用它解决了这个问题。我会标记答案,检查谁在几天内获得最高票数。 – Neutralizer 2011-09-27 17:17:56