从代码背后设置Bing Maps Silverlight控件属性

时间:2010-08-06 14:58:58

标签: c# silverlight bing-maps

我需要在加载页面控件之前从代码中设置CredentialsProvider。我在后面的代码中有“ApiKey”依赖属性并将其绑定到Bing Maps silverlight Control但它不起作用。它在运行时给出错误“无效凭据”。

背后的代码

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,是从UserControl继承的。

3 个答案:

答案 0 :(得分:6)

CredentialsProvider = new ApplicationIdCredentialsProvider("AbcdEfghIjklMNnoP_4rlMTclX8iXiNYUYQnG3GPYoxABCDEmoj3cCBemAAG")

答案 1 :(得分:0)

CredentialsProvider属性不是字符串类型,并且不会自动将字符串转换为CredentialsProvider实例(如何选择要转换为哪个子类?)

最好从代码中公开CredentialsProvider实例。这样,您可以返回API密钥或客户端令牌,可能基于您的配置文件。

答案 2 :(得分:0)

经过多次努力之后,我终于发现当Thread.CurrentUICulture设置为不变文化时会发生这种情况。 确保它在App.Startup事件处理程序中设置为特定的文化(也考虑设置Thread.CurrentCulture),例如。

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");

当然,您仍然需要使用AppID正确设置凭据。 HTH。