0

ページにコントロールをロードする前に、コード ビハインドから CredentialsProvider を設定する必要があります。コード ビハインドに "ApiKey" 依存関係プロパティがあり、それを Bing Maps 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 で、UserControl から継承されています。

4

3 に答える 3

6
CredentialsProvider = new ApplicationIdCredentialsProvider("AbcdEfghIjklMNnoP_4rlMTclX8iXiNYUYQnG3GPYoxABCDEmoj3cCBemAAG")
于 2011-05-29T20:13:47.463 に答える
0

プロパティは文字列型ではなく、CredentialsProvider文字列をCredentialsProviderインスタンスに自動的に変換しません(変換するサブクラスをどのように選択しますか?)

CredentialsProviderコードからインスタンスを公開するのが最善です。そうすれば、おそらく構成ファイルに基づいて、APIキーまたはクライアントトークンのいずれかを返すことができます。

于 2010-08-06T20:44:36.653 に答える
0

苦労の末、Thread.CurrentUICulture がインバリアント カルチャに設定されている場合に、これが発生することを最終的に発見しました。App.Startup イベント ハンドラーで特定のカルチャに設定されていることを確認してください (Thread.CurrentCulture も設定することを検討してください)。

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

もちろん、AppID を使用して資格情報を適切に設定する必要があります。HTH。

于 2011-05-31T19:46:46.723 に答える